前提・実現したいこと
Googleフォームにて毎日検温記録を行っており、今日の未回答者だけを抽出するシステムを組むことを試みています。
1枚目のシートがフォームの回答、2枚目のシートが名簿とし、3枚目のシートには2枚目に名前があるのに1枚目に名前のない人、つまり未回答者を取得し反映するようにしています。
ただ、毎日の検温なので前日に回答している場合、1枚目に名前が残り、3枚目に反映されなくなってしまいます。
今日だけのデータを取得し反映する方法をご教示願いたいです。
Googleフォームへの回答時にタイムラインが記録されれるので、それを利用できないかを考えているのですが、上手くいきません。
。
■■な機能を実装中に以下のエラーメッセージが発生しました。
発生している問題・エラーメッセージ
エラーメッセージ
該当のソースコード
function appendRecords() { const ss = SpreadsheetApp.getActiveSpreadsheet(); const memberSheet = ss.getSheetByName("回答者一覧"); const answerSheet = ss.getSheetByName("フォームの回答1"); const noanswerSheet = ss.getSheetByName("未回答者"); //シート[回答者一覧]から全員の名前、[フォームの回答1]から回答済みメンバーの名前を取得 const array01 = memberSheet.getRange(2, 2, memberSheet.getLastRow()-1).getValues().flat(); const array02 = answerSheet.getRange(2, 3, answerSheet.getLastRow()-1).getValues().flat(); const array03 = []; //pushメソッドを用い差分をarray03に代入 for (const num of array01) { if (!array02.includes(num)) { array03.push([num]); } } var i = array03.length; var j = array03[0].length; noanswerSheet.getRange(1,1,i,j).setValues(array03); }
試したこと
下記のように今日のデータだけを抽出できるようなプログラムを試したのですが、どこか間違ているらしく、datenowが空箱の状態のままになってしまいます。
const date = answerSheet.getRange('A:A').getDisplayValues().flat();
const datenow =[];
Logger.log(date);
var d = new Date();
var y = d.getFullYear();
var mon = d.getMonth() + 1;
var d2 = d.getDate();
var today = y+"/"+"0"+mon+"/"+d2;
if (date.includes(today)){
datenow.push([day])
}
補足情報(FW/ツールのバージョンなど)
初心者なのでGoogleで調べて見よう見まねで組んだシステムなので拙いところが多々ありますが、ご教示願えるととても嬉しいです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/09/21 06:21