トリガー関数にはイベント オブジェクトが渡されますが、パラメーター リストでそのオブジェクトに名前を付けない限り、arguments
.
これを試して:
function onFormSubmit(e) {
関数を機能させるために必要なことはこれだけです。
または、 を使用する場合はarguments
、コードを次のように変更する必要があります。
var CheckString=arguments[0].values[5];
ただし、まだ他の問題があります。Range.clearContents()
以前の回答はすべて消去されますが、質問/ヘッダー行も消去され、回答範囲はリセットされません。
この回答tidy()
の関数の変形を使用するようにスクリプトを書き直しました。これにより、ヘッダーが残り、以前のすべての応答を含む行が完全に削除されます。
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);
}