我已經設定了一個腳本來創建一個谷歌表單并將其鏈接到電子表格,有沒有辦法收集回復并將它們放在另一個作業表的某些單元格中,然后取消鏈接并洗掉表單回復作業表。
我需要的腳本必須足夠靈活,以至于回應表的名稱無關緊要,因為我將制作多個單用表單,因此為什么我還想在移動答案后洗掉回應表
例如,假設答案是 A (a1)、B (b1) 和 C (c1),我想在完成后將它移到作業表“C”和 F、G 和 H 列中,我希望回應表取消鏈接并被洗掉
任何幫助將不勝感激
uj5u.com熱心網友回復:
問題:
您希望將表單回應資料提交到您選擇的作業表,而不是將表單鏈接到電子表格時創建的作業表。
解決方案:
在這種情況下,我建議根本不要將表單鏈接到電子表格,而是使用onFormSubmit觸發器將提交的資料寫入所需的作業表。
作業流程:
- 安裝
onFormSubmit觸發器。您可以按照以下步驟手動執行此操作,也可以通過執行此函式一次以編程方式執行此操作:
const SOURCE_FORM_ID = "YOUR_FORM_ID"; // Change according to your needs
function installOnFormSubmitTrigger() {
const form = FormApp.openById(SOURCE_FORM_ID);
ScriptApp.newTrigger("onFormSubmitTrigger")
.forForm(form)
.onFormSubmit()
.create();
}
- 安裝觸發器后,
onFormSubmitTrigger每次有人向表單提交回應時,都會執行一個名為(不必以這種方式命名)的函式。此函式應將回應資料附加到所需的作業表中。它可能是這樣的(檢查行內注釋):
const TARGET_SPREADSHEET_ID = "YOUR_SPREADSHEET_ID"; // Change according to your needs
const TARGET_SHEET_NAME = "Sheet1"; // Change according to your needs
function onFormSubmitTrigger(e) {
const targetSpreadsheet = SpreadsheetApp.openById(TARGET_SPREADSHEET_ID);
const targetSheet = targetSpreadsheet.getSheetByName(TARGET_SHEET_NAME);
if (targetSheet.getLastRow() === 0) { // Add headers if they don't exist yet
const itemTitles = e.source.getItems().map(item => item.getTitle()); // Get item titles
itemTitles.unshift("Timestamp"); // Append "Timestamp" to the sheet (if desired)
targetSheet.appendRow(itemTitles); // Append form item titles to the sheet
}
const itemResponses = e.response.getItemResponses();
const responses = itemResponses.map(itemResponse => itemResponse.getResponse()); // Get user responses
responses.unshift(new Date()); // Add today's date to the responses (if desired)
targetSheet.appendRow(responses); // Append responses to the sheet
}
筆記:
- 如果您不想提交到電子表格中的第一列,只需將空字串添加到回應陣列中,或使用Range.setValues代替。
參考:
- 可安裝的觸發器
- 追加行
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/343994.html
下一篇:我想在谷歌表上更改這個腳本
