【问题标题】:Handling edits to a Google Form response处理对 Google 表单响应的编辑
【发布时间】:2018-04-26 12:59:46
【问题描述】:

目标:

  • 使用 Google 表单,我将数据提交到电子表格。我在电子表格上使用 Apps 脚本来触发“提交表单”,将数据推送到 Google 文档上的表格中。

  • Google Docs 表中的第一列包含相对于 Google Sheet 中行 ID 的行 ID。

问题:

  • 就我的申请而言,某些表格需要编辑/更新回复。
  • 我的脚本目前只向 Google 文档表添加新行(包括我只想编辑相关行而不是在新行上提交的编辑)。显然,Google 表格行会自动更新而不会出现问题。

我创建解决方案的思路:

  • 我将该列添加到包含唯一标识符(电子表格行 ID)的 Google 文档表中
  • 问题:当您在内部并编辑 Google 表单(之前已提交)时,是否会在 Google 表格中激活 .activeRow()?如果是这样,我可以检查它是否是现有行。
  • 问题:如何搜索包含 ID 的 Google Doc 表的列?一旦我确定了行,我该如何编辑它?与.getElement(); 有关吗? Google 文档中的表格与 Google 表格中的表格处理方式是否不同?

你认为我在正确的道路上吗?我缺少一个更简单的解决方案吗?

// Grab the Table
var body = DocumentApp.openById('theid').getBody(),
searchElement = body.findElement(DocumentApp.ElementType.TABLE),
element = searchElement.getElement(),
table = element.asTable();

// Get the last row ID
var range = SpreadsheetApp.getActiveSheet().getLastRow();
// Insert the Row
var cells = [range, theDate, nameWelcome, interest, value, comment, offer];
var addRow = table.appendTableRow();
cells.forEach(function(e, i){
  addRow.insertTableCell(i, e);
});

【问题讨论】:

  • 编辑 Google 表单不会为 Google 表格生成任何事件。
  • @tehhowch 如果我要调用 FormApp 并获取活动表单,我是否可以获取表单 ID,然后获取谷歌表格中的活动行?
  • 不,您很可能会获得对第一张表格的单元格 A1 的虚拟引用,因为(对于您项目的该服务器实例)没有人使用 Google 表格文档。您需要做的是打开收集提交表单响应的响应工作簿的工作表,读取该表上的所有数据 (sheet.getDataRange().getValues()),然后检查每一行以确定数组中的该行是否具有相同的数据作为您正在编辑的表单响应。
  • 要添加到您的解决方案中,如果我学会将活动表单 ID(例如 1xHTpJVrucLR17KYx0dg_2jgCMnoax1gfVU1bolfOjC8)保存在列中,假设它应该给我一种快速搜索工作表的方法。感谢您的帮助。

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


【解决方案1】:

我在这里找到了答案。 How can an apps-script on a Form store extra data into the Sheet?

我需要从表单脚本而不是工作表运行代码。这样我就可以获得活动的网址。我还需要指出具体的工作表。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-27
    • 2016-10-12
    • 1970-01-01
    • 2017-08-30
    • 1970-01-01
    • 2022-06-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多