【问题标题】:How to set Google Form response destination to two different spreadsheets in Google Apps Script?如何在 Google Apps 脚本中将 Google 表单响应目标设置为两个不同的电子表格?
【发布时间】:2020-09-06 07:20:15
【问题描述】:

每个小组都有一个 Google 表单要填写。每个组表单的响应被发送到每个组的电子表格。我想要一个“主电子表格”来收集所有组的所有回复。在 Google Apps Scripts 中,我尝试过:

form.setDestination(FormApp.DestinationType.SPREADSHEET, responseSpreadsheet.getId());
form.setDestination(FormApp.DestinationType.SPREADSHEET, masterSpreadsheet.getId());

响应仅发送到“masterSpreadsheet”,“responseSpreadsheet”被忽略。

【问题讨论】:

  • 您只能有一个目的地。将数据从一个电子表格传输到另一个电子表格怎么样?

标签: google-apps-script google-sheets google-forms


【解决方案1】:

我简要地查找了明确说明 Google 表单仅支持一个 外部 目标的文档,但没有找到。但是,您可以从 UI 中假设这一点只支持一个,getDestinationId() 只返回一个 ID。

获得对另一个电子表格的响应的最直接的方法可能是在主要目标电子表格上使用form submit trigger。该触发器在事件对象中提供了values 属性,您可以简单地将其传递给appendRow()

function onFormSubmit(e) {
  const alternateDestinations = [
    { url: 'https://docs.google.com/spreadsheets/d/SS_ID/edit', sheetName: 'Sheet1' }
  ];
  for (let i = 0; i < alternateDestinations.length; i++) {
    let dest = alternateDestinations[i];
    SpreadsheetApp.openByUrl(dest.url).getSheetByName(dest.sheetName).appendRow(e.values);
  }
}

更复杂的方法是在表单本身上使用form submit trigger。您可以让它将响应写入您指定的所有电子表格,而不是设置特定的电子表格目标。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-24
    • 2023-03-05
    • 1970-01-01
    • 2017-03-27
    • 1970-01-01
    相关资源
    最近更新 更多