2017-04-06 44 views
0

我一直在閱讀和在線觀看很多教程,但是我找不到可以初始加載某種對話框或具有單個輸入文本的登錄頁面的內容那麼我可以使用應用程序腳本來處理它。如何爲完成它的用戶添加Google表單的登錄

onFormOpen()未完成表單的用戶觸發。

在我onSubmitForm()函數,我有以下代碼:

function onFormSubmit(e){ 
    var formResponses = FormApp.getActiveForm().getResponses(); 
    var formResponse = formResponses[formResponses.length-1]; 
    var itemResponses = formResponse.getItemResponses(); 
    for (var j = 0; j < itemResponses.length; j++) { 
    var itemResponse = itemResponses[j]; 
    Logger.log('Last response to the question "%s" was "%s"', 
       itemResponse.getItem().getTitle(), 
       itemResponse.getResponse()) 
    } 
} 

有什麼辦法,我可以從這裏被用某種邏輯條件提交形式,爲前預防:執行表單提交只有某些領域符合某些條件?

+1

無法阻止表單提交將數據保存到表單中。而且您無法刪除表單提交。我確信它是故意設計的。 –

+1

您需要使用HTML表單創建您自己的自定義Web應用程序才能做到您想要的。您可以使用Apps腳本創建Web應用程序,該應用程序腳本與網站基本相同,但無法獲取域名。 –

+0

@SandyGood感謝您的答案,通過使用Apps腳本創建自定義Web應用程序,我不明白這樣做和使用應用程序腳本的好處是什麼,我可以在純HTML和JS中做到這一點,而無需使用谷歌應用程序腳本。無論如何,我可以在使用Web App時包含Google表單,並在表單被某人查看時使用它進行操作?我的意思是我有更多的控制在Web應用程序的形式! –

回答

1

有沒有什麼辦法可以阻止這裏的表單被提交某種邏輯條件,例如:僅當某些字段匹配某些條件時才執行表單提交?

你可以使用form rules

您可以創建人,當他們填寫表單遵守規則。例如,如果您要求輸入電子郵件地址,則可以確保用戶只能提交格式正確的電子郵件地址。

關於onFormOpen(),沒有一個內置的觸發器命名的方式。您可以將其用作打開的可安裝觸發器的名稱,但只能在打開表單視圖時運行,而不能在打開表單視圖時運行。

關於添加自定義日誌記錄,如果您使用G Suite帳戶,則可以限制您與帳戶所在域名的訪問權限,但您無法進一步限制訪問權限。

一個詭異的替代方法是從表單視圖獲取源代碼並將其「修改」爲由Google Apps腳本提供服務或將其託管在您自己的Web服務器上。這意味着您將注入自定義表單規則/數據驗證。更簡單的方法是使用舊的Google窗體並複製/粘貼表單的源代碼,但可以使用UrlFetch。

另一種替代方法是使用Google Apps腳本中的HtmlService服務創建並提供您的表單,這實際上可以讓您完全控制表單行爲。見Forms - HTML Service: Communicate with Server Functions

相關:

https://webapps.stackexchange.com

+0

表單規則不允許我調用應用腳本功能,是嗎?例如在我的情況下,我需要檢查某些輸入是否有效,通過調用具有檢查checkdigit的Luhn算法的算法的JavaScript函數。 –

+0

沒錯。表單規則有一個內置的「規則構建器」,可以允許我們使用正則表達式,但不支持JavaScript。 –

+0

那麼你會如何建議我或者我如何實現這樣的功能,以便我可以使用JavaScript函數驗證Google窗體函數,這有可能嗎?我正在尋找一個直接的答案是或不是!如果是的話,你可以提出一個辦法嗎? –

相關問題