我正在尝试在其响应中添加Google表单的标题,以便在用户提交表单时将所述数据写入电子表格。
我相信我需要使用withItemResponse(response)
到目前为止,这是我想出的。
function myFunction() {
var form = FormApp.getActiveForm();
var title = form.getTitle();
var formResponse = form.getResponses();
var items = form.getItems();
formResponse.withItemResponse(items[5].asTextItem().createResponse(title).submit());
}
我该如何进行这项工作?
您无法以编程方式提交用户回复(引发“抱歉,此回复已提交。”例外)。 Submit()[1]函数用于尚未提交的响应(以编程方式进行)。
但是,您可以为目标电子表格[2] [3](链接到表单的表单)创建表单提交触发器,并从表单获取标题以将其插入到您希望的列中(我使用了第7个列):
function onUserFormSubmit(e) {
//Get Form from formID and title
var form = FormApp.openById("[FORM-ID]");
var title = form.getTitle();
//Row where user response is inserted
var responseRow = e.range.getRow();
//Column where you want the title to be
var titleColumn = 7;
//Get responses sheet and insert the title in the given cell
var sheet = SpreadsheetApp.openById("[SPREADSHEET-ID]");
sheet.getSheetByName("Form responses 1").getRange(responseRow, titleColumn).setValue(title);
}
function createTrigger() {
var sheet = SpreadsheetApp.openById("[SPREADSHEET-ID]");
ScriptApp.newTrigger("onUserFormSubmit")
.forSpreadsheet(sheet)
.onFormSubmit()
.create();
}
[1] https://developers.google.com/apps-script/reference/forms/form-response#submit()
[2] https://developers.google.com/apps-script/guides/triggers/installable
[3] https://developers.google.com/apps-script/guides/triggers/events#google_sheets_events