2013-03-28 182 views
8

如何引用默認的「提交」表單按鈕以將'onsubmit'觸發器與其他操作鏈接起來?謝謝。Google表單提交

例如,使用的onsubmit,

Logger.log('do something'); 
+0

你能否詳細說明你的問題。這還不夠清楚。當有人提交表單時你是否想要運行一個函數?如果是這樣,那麼你可以調用函數onSubmit() – Srik

回答

6

一個沒有。表單服務不允許對產品進行任何編程控制。問題跟蹤器上有一個open issue用於此一般主題。將它打到「投票」並接收更新。

但是,你並沒有失去。在接收表單回覆的電子表格中,您可以添加帶有可安裝觸發器的腳本以激活「表單提交」。從那裏,你可以對提交的數據做很多事情,包括記錄,只要你願意......但沒有任何形式本身。

Triggers

這些引用解釋的觸發器和事件。

+0

更新 - 現在有一個Forms服務,它可以對許多表單的元素進行編程控制。 – Mogsdad

+0

引用的問題已修復。 –

3

這是一個古老的答案。

目前(2014年1月)onSubmit有兩種方式。一種是簡單地做一個函數onSubmit(),據推測(它不適用於我...)只允許在當前提交用戶的許可下進行一組有限的操作。例如,您不能訪問他提交的電子郵件,或者修改下一個提交的基礎表單。

然後是提交的觸發器,您可以添加並附加到任何函數,並根據您自己的權限執行任何您想要的操作。看起來與上面答案中的觸發器添加屏幕截圖相同,只不過它的第一列顯示了您的表單腳本中的方法,下一列顯示爲:From-Form和您選擇的第三列:On Submit。

通常情況下,您的方法將收到一個事件e,誰的e.values與電子表格中保存的值相同。所以

功能formSubmitted(E){...

6

而不是添加腳本到電子表格從形式接收響應(如Mogsdad的答案),我添加了得到由觸發腳本的表單提交按鈕。

第1步:首先創建一個谷歌表單

sample Google Form

步驟2:然後從菜單中,單擊工具 - >腳本編輯器

Form editor menu bar

步驟3:給你之類的函數onSubmit()

Script editor

步驟4名:編寫一些代碼,通過點擊運行按鈕

function onSubmit() { 
    MailApp.sendEmail("[email protected],[email protected]", 
        "Subject", 
        "A new application has been submitted.\n\n" + 
        "Here is the link to all Applications:\n" + 
        "https://docs.google.com/spreadsheets/x/1-fdasjhFAKEfdaahfkhsa/", 
        {name:"From Name"}); 
} 

第5步發送電子郵件這樣的,然後進行測試:腳本編輯器的菜單上,單擊運行,或單擊播放按鈕在工具欄上,以測試你的鱈魚e(例如確保你的電子郵件)

Menu bar Run command

步驟6:腳本編輯器的菜單上,單擊資源 - >當前項目的觸發器

Script Editor menu bar

步驟7:選擇設置活動From formOn form submit

Google App Triggers

第8步:從表單編輯器的菜單然後,單擊工具 - >腳本管理,並確保你的腳本選擇

Script manager

步驟9:嘗試一下形式。點擊表單的提交按鈕後,您應該收到一封電子郵件。上述

Google Apps live Form

+1

假設**我添加了一個由Form的提交按鈕觸發的腳本**不正確,您的答案使用與Mogsdad答案中相同的可安裝觸發器......您只是將它嵌入到表單容器中,但它只是更改一點都沒有。在發佈第一個答案時,不能在腳本中嵌入腳本。 –

0

JohnB的HOWTO非常出色。更新(NOV 2017):

  • 第2步:「腳本編輯器...」是
  • 第6步形式的垂直「......」漢堡菜單右上角:‘項目觸發器’中找到(時鐘狀圖標)(上面顯示的第二個圖標)。
  • 第7步:單擊「添加新觸發器」,忽略了「不myFunctions」的警告。
  • 步驟8:似乎並不存在,可能沒有必要,對我的作品沒有。

上述許多步驟都要求表單所有者進行驗證/接受。

1

似乎有兩個觸發代碼的應用程序:(1)表單和(2)電子表格鏈接到表單響應。

(1)如上面的Mogsdad和JohnB所述,沒有太多的人可以通過程序從表單中進行編程,因爲事件沒有發送到函數。例如,可以發送一封電子郵件「On form submit」或「On open」,但沒有事件對象,甚至不能記錄數字或行,也不能記錄任何有關文檔或提交的內容。 (2)然而,如果電子表格鏈接到表單的響應,則可以在電子表格上設置觸發器,其中可以訪問事件以及行,列和其他數據。

從鏈接響應谷歌電子表格:

  • 步驟1:工具>腳本編輯器
  • 步驟2:寫一些代碼,例如:

Code.gs:

function onSpreadsheetSubmit(e) { 
    var row = e.range.getRow(); 
    MailApp.sendEmail("[email protected]", 
       "Your subject, rows: "+ row, 
       "A new application has been submitted on row: "+ 
       row, 
       {name:"From your friendly spreadsheet"}); 
} 
  • 第3步:運行>運行功能> onSpre adsheetSubmit(或|>圖標)
    • 該事件可能沒有實際行,因爲該測試與實際提交沒有關聯。
  • 第4步:您會被要求選擇一個用戶,並驗證自己
  • 第5步:編輯>當前項目的觸發器(或類似時鐘的圖標)
  • 6步:添加新的觸發
  • 第7步:onSpreadsheetSubmit |從電子表格|通過等待(或執行)一個真實的表單提交
  • 第10步測試:檢查您的電子郵件

更多關於表單提交

  • 第8步:驗證和保存(或反向)
  • 第9步info:https://developers.google.com/apps-script/guides/triggers/events#google_sheets_events