google-apps-script script教學 - Google表單中的隱藏字段




form examples (4)

您無法直接通過Google表單執行此操作,但您可以解決此問題:

  1. 創建包含隱藏字段的Google表單。
  2. 創建Google Wep應用程序( https://developers.google.com/apps-script/guides/web
  3. 將以下代碼插入默認的Code.gs文件中。 (這基本上打開了index.html模板。)

    doGet(e) { return HtmlService.createTemplateFromFile('index').evaluate(); }

  4. 使用表單的源代碼創建一個新的index.html文件。

  5. 通過將style="display:none"到其封閉的<div>來隱藏輸入字段
  6. 使用<?= your_gscript_code() ?>任何模板信息插入<input value="">字段
  7. 發布Web應用程序(發布/部署Web應用程序...),您就完成了。 現在,您有一個表單的鏈接,該表單隱藏了所需的字段並預先填充了您的隱藏值。

使用此解決方案,您可以應用任何自定義樣式,甚至可以刪除其他不必要的html元素,同時保持Google託管的表單。

我正在為表單的每個提交添加一個唯一的ID。 現在,我將該ID作為第一個字段,並使用ID預填充它,並提供幫助文本,要求用戶不要修改此字段。 是否有任何選項我無法向用戶顯示此選項?


我想我找到了解決問題的方法。 可以在表單提交時觸發表單上可以觸發表單數據的腳本。 然後,您可以為提交的每一行複制並增加“範圍”。

*編輯,請求示例代碼。 為了使此代碼正常工作,您需要使用Google應用腳本上的資源菜單“安裝觸發器”,並使用“來自電子表格”“在表單提交上”。 我已經把我正在做的事情歸結為以下代碼片段。

function myFormUpdates(e) {
  var spreadsheet = SpreadsheetApp.getActive()
  //select the sheet you're form is going to post data to
  var sheet = spreadsheet.setActiveSheet(spreadsheet.getSheets()[1])
  //select the last row and a unused column
  var cell = sheet.getRange(sheet.getLastRow(), 3)
  //set data
  cell.setValue('Data')
}

我假設您只對在用戶填寫表單之前以編程方式分配唯一ID的方式感興趣。

不,Google表單仍然沒有對HTML表單中隱藏字段的直接支持。 您唯一的選擇似乎是您已經知道的自定義樣式路線。

這是兩個有前途的想法,但是沒有用......

  1. 預先填寫已刪除的問題。 如果您從表單中刪除問題,它將保留在響應電子表格中 - 遺憾的是,Forms會抑制預填充URL中顯示的已刪除問題的值,否則您將能夠以這種方式將您的唯一ID欺騙到提交中。 (我認為這可能是一個聰明的解決方法,但是它失敗了,它沒有用。)

  2. 在跳過的頁面上預先填寫問題1 您可以在第二頁上設置實時表單將跳過的問題,還可以為該問題生成預填充的URL。 到目前為止,這麼好 - 但如果用戶實際上沒有導航到該頁面,則不會提交預先填寫的響應。

1感謝@AdamL,他在舊論壇上之前關於此主題的討論中提出了這個想法。


作為替代方案,我們使用了大綱功能,因此我們可以快速上下翻閱文檔:

  • 首先從菜單中打開“輪廓”工具:“工具” - >“文檔輪廓”

  • 如果要輕鬆訪問文檔的一部分,請在該點選擇一些文本並為其指定標題:點擊工具欄中顯示“普通文本”的部分並將其更改為“標題5”。

  • 通過點擊旁邊的X,從大綱中刪除任何不需要的標題。





google-apps-script google-spreadsheet google-form