だから、私は4日前にJavascriptを学習し始めたと言って始めます。それでは、このスクリプトの私の意図は途方に暮れています。週ごとに新しいシートにフォーム応答をコピーして保存するGoogleスクリプト
スプレッドシートで収集されたGoogleフォームレスポンスをアーカイブと同じブック内の新しいシートに移動するプロセスを自動化したいと思います。
私はこれを週単位で、そして1週間の応答しかないように作成された各アーカイブシートに対して実行したいと思います。これは日曜の午前12時01分〜午前1時00分の間でなければなりません。
プライマリコレクションシート(Current_Responses)からそれらの応答をすべて削除することもできますが、後で手動で削除する必要がある場合は、うまくいきます。 )。
私はこれをやっていてかなり前向きなスタートを切っているように感じますが、これに新しいので、経験豊富なスクリプタが私のコードを見て、意図していない場合は、間違いはどこにあり、どのように修正するのか。私は間違いを犯して喜んで、そしてそれらから学ぶので、どんな助言も深く尊敬されるでしょう。
これをまとめるために、3つのWebサイトでいくつかのトピックとスクリプトを調べました。助けやアドバイスをいただき、ありがとうございます。
// function to copy from Current_Responses to new sheet 'Archived_Responses
//(UTC Date)' placed after Current_Responses
function CreateCopySheetWeekly() {
//source info
var ss = SpreadsheetApp.getActiveSpreadsheet();
var templateSheet = ss.getSheetByName('Current_Responses');
var range = ss.getRange ('A:I'); //replace column length as needed
var data = range.getValues();
//creates target sheet to copy responses to
var ts = 'Archived_Responses '+formatDate();
ss.insertSheet(sheetName, ss.getSheets().length, {template: templateSheet});
ts.getRange(ts.getLastRow()+1, 1, data.length, data[0].length).setValues(data);
}
//end of primary function
//function to determine and format UTC Date for CreateCopySheetWeekly function
function formatDate() {
var month, day, d = new Date();
month = ('0'+(d.getUTCMonth()+1)).slice(-2);
day = ('0'+(d.getUTCDate()).slice(-2);
return d.getUTCFullYear()+'-'+month+'-'+day;
}
//end of date function
//check every hour to determine when to perform newSheetLast function. Intended for Sunday
//between 0001-0100
window.setInterval (onSunday(){
var today = new Date();
if (today.getDay() == 0 && today.getHours() === 12) {
CreateCopySheetWeekly();
}, 600000);
私はこれで初めてですから、簡単に移動しますが、建設的な批判は決して誰にも害を与えません。