Ваша триггерная функция передается объект события, но если вы не назовете этот объект в списке параметров, вы будете должны получить к нему доступ через arguments
.
Попробуйте это:
function onFormSubmit(e) {
Вот и все, что нужно, чтобы сделать вашу работу функции.
В качестве альтернативы, если вы хотите использовать arguments
, вы должны изменить свой код, чтобы сделать что-то вроде этого:
var CheckString=arguments[0].values[5];
У вас еще есть другие проблемы, хотя. Range.clearContents()
удалит все ваши предыдущие ответы, но также удалит строку вопроса/заголовка и не сбросит диапазон ответов.
Я переписал ваш сценарий, чтобы использовать вариант функции tidy()
от this answer. Это оставит ваши заголовки и полностью удалит строки, содержащие все предыдущие ответы.
function onFormSubmit(e) {
var CheckString=e.values[5];
if (CheckString == ['purge']) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var first = ss.getSheetByName("Form Responses");
var numResponses = first.getDataRange().getNumRows() - 1;
tidy(first,numResponses);
}
}
/**
* Prompt user for the number of form response rows to remove, then delete them.
* Assumes that the form responses are in the active sheet, that there is one
* row of 'headers' followed by responses (in row 2).
*
* @param {Sheet} sheet Sheet to be tidied.
* @param {number} thisMany (Optional) The number of rows to remove. If not
* specified, user will be prompted for input.
*/
function tidy(sheet,thisMany) {
if (tidy.arguments.length == 0) {
// Exception if no sheet provided
throw new Error('Parameter "sheet" not defined');
}
// else we assume we have a Sheet object for first argument
if (tidy.arguments.length == 1)
thisMany = Browser.inputBox("How many responses should be tidied?");
sheet.deleteRows(2, thisMany);
}
безупречный. теперь, чтобы выяснить http сообщение отправить команду очистки от excel! Я спрыгну с этого моста, когда я доберусь до него! – user2448450
Просто глупое примечание: в Javascript (и скрипте приложений) вы можете получить доступ к параметрам функции, даже не назвав его. Просто проверьте массив 'arguments'. –
@HenriqueAbreu - согласился, хотя он менее дружелюбен для самонадеянных noobs. Я обновил ответ на примере использования 'arguments'. (Уже использовал его в 'tidy()'.) – Mogsdad