Итак, я начну с заявления, что только начал изучать Javascript 4 дня назад. Теперь, когда это не в порядке, мое намерение с этим скриптом.Google Script для копирования и архивирования ответов форм в новом листе на недельной основе
Я хотел бы автоматизировать процесс переноса ответов Google Form, которые собираются в электронной таблице, на новый лист в той же книге, что и архив.
Я бы хотел, чтобы это происходило еженедельно, и для каждого архивного листа, который создан, чтобы иметь только ответы за 1 неделю. Это должно быть между 12:01 AM-1:00AM по воскресеньям, это действительно не имеет значения в тот час, когда это произойдет.
Я также хотел бы удалить все эти ответы из основного листа коллекции (Current_Responses), но если мне придется вручную удалить их позже, это нормально (и, вероятно, хорошо, потому что тогда я могу проверить, что скрипт работал правильно).
Я чувствую, что у меня есть довольно солидное начало для этого, но поскольку я новичок во всем этом, я был бы очень признателен, если бы более опытный сценарист мог посмотреть мой код и сказать мне, будет ли это работать, как я намеревается это, а если нет, то где ошибки и как их исправить. Я счастлив ошибаться, а потом учись у них, поэтому любой совет будет глубоко почитаем.
Я исследовал несколько тем и сценариев на трех веб-сайтах, чтобы помочь собрать это вместе. Заранее благодарим за помощь и совет!
// 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);
Прогуляйтесь со мной, так как я новичок в этом, но конструктивная критика никого не повредит.