所以我有一個電子表格腳本表單提交觸發設置了:源對象在谷歌Apps腳本提交事件
ScriptApp.newTrigger('onConfirmationFormSubmit').forForm(confirmationForm).onFormSubmit().create();
與處理函數:
function onConfirmationFormSubmit(event)
{
Logger.log('Source object ID:');
Logger.log(event.source.getId());
Logger.log('Spreadsheet ID');
Logger.log(SpreadsheetApp.getActiveSpreadsheet().getId());
}
現在,根據this頁,對於表單提交事件,在事件參數的源對象應該是已提交的表格 - 但是當一個表單提交,上面的代碼提供了以下日誌輸出:
[14-07-04 17:03:59:417 EST] Source object ID:
[14-07-04 17:03:59:417 EST] 1I7ap9XJuFJtTgcM4xIFpE-IGqXQE8ohDJEpN7oN9IUk
[14-07-04 17:03:59:417 EST] Spreadsheet ID
[14-07-04 17:03:59:418 EST] 1I7ap9XJuFJtTgcM4xIFpE-IGqXQE8ohDJEpN7oN9IUk
上面鏈接的文檔頁面指出,source屬性應該始終是一個Form對象,但它似乎是一個Spreadsheet對象 - 這是打算使用嗎?
爲了說明起見,您不能通過在腳本編輯器中單擊「當前項目的觸發器」按鈕來爲電子表格設置此類型的觸發器,它只能使用我發佈的第一個代碼段創建。請參閱:
(此圖像中,爲onFormResponse
功能觸發以編程方式創建,而someOtherFunction
觸發與「添加新的觸發」按鈕創建)。
我敢肯定,觸發源是一個表單提交事件。調用'Logger.log(JSON.stringify(e));'給出'{「response」:{},「source」:{},「authMode」:{}}' - 沒有其他類型的事件通過只有這些屬性的對象。電子表格事件(我假設你指的是Spreadsheet Form Submit事件)傳遞一個具有'values','range'和'namedValues'屬性的對象。 – Mridsole