Я пытаюсь программно создать триггер для таблицы Google, когда форма отправляется с кодом из другой таблицы, но она не работает. Вот мой код:
function createOnFormSubmitTrigger()
{
//Id of "Spreadsheet 1"
var ssId = "18bq-67nP4y7F9Hp4jzpbKPCyAsR6hglgcfmxCi_zj14";
ScriptApp.newTrigger("formInput").forSpreadsheet(ssId).onFormSubmit().create();
}
Если я помещу этот метод в «Таблицу 1» и запустите его, он будет работать нормально и создаст сценарий в Таблице 1, как и предполагалось. Однако, если я добавлю этот метод, скажем, в «Таблицу 2» и запустим его, он создаст триггер в Таблице 2 вместо Таблицы 1, что не так, как предполагалось. Что я делаю не так?
Вот код для formInput для оригинального скрипта и фиктивного скрипта, который я сделал для тестирования:
Оригинал:
function formInput()
{
var spreadSheet = SpreadsheetApp.getActiveSpreadsheet();
var inSheet = spreadSheet.getSheetByName("Form Responses");
var data = inSheet.getSheetValues(2,2,1,7);
var minutes = data[0][0];
var seconds = data[0][1];
var numMissed = data[0][2];
var sgIncorrect = data[0][3];
var sfMissed = data[0][4];
var year = data[0][5];
var testLevel = data[0][6];
var date = new Date();
var outSheet = spreadSheet.getSheetByName(testLevel);
var testLevelExists = (outSheet != null);
if(testLevelExists)
{
outSheet.insertRowBefore(2);
outSheet.getRange(2,1).setValue(date.getMonth()+1+ "/" + date.getDate());
outSheet.getRange(2,2).setValue(year);
var secStr = ("0" + seconds);
outSheet.getRange(2,3).setValue(minutes + ":" + secStr.substring(secStr.length-2));
outSheet.getRange(2,4).setValue(numMissed);
outSheet.getRange(2,5).setValue(sgIncorrect);
outSheet.getRange(2,6).setValue(sfMissed);
outSheet.getRange(2,7).setValue(350-7*(sgIncorrect+numMissed)-2*(sfMissed));
shiftBox(outSheet);
setFormulas(outSheet);
updateAverageTime(outSheet);
inSheet.deleteRow(2);
copyToMaster(spreadSheet,outSheet);
}
}
пустышки:
function formInput()
{
var hi = "hello";
}