google-apps-script - 来自 FormResponse 的表单标题

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

我通过电子表格以编程方式创建了一堆表单,并将响应触发器绑定(bind)到每个表单。填写表格后,我似乎无法弄清楚填写的是哪张表格。

我尝试过:

Event.source.getId() 

但这会返回电子表格的 ID。我想获得表格的标题。

编辑:澄清

这就是我设置触发器的方式:

ScriptApp.newTrigger('responseTrigger').forForm(form)
 .onFormSubmit()
 .create();

当我尝试获得标题时:

function responseTrigger(e) {
  var source = e.source;
  var title = e.source.getTitle().
  Logger.log(title);
}

我收到以下错误:

Execution failed: TypeError: Cannot find function getTitle in object Spreadsheet.

最佳答案

我终于解决了这个问题。

有一个知道Google Scripts issue这就是我的问题所在。您可能希望 e.source.getID() 为您提供表单的 ID,但它却为您提供电子表格的 ID。我找到了solution in this question 。您要做的就是找到触发器的唯一 ID,并将其与所有项目触发器交叉引用,如下所示:

    function getFileByTriggerId(triggerId){
      var triggers = ScriptApp.getProjectTriggers();
      for(var i =0; i<triggers.length; i++){
       if(triggers[i].getUniqueId() == triggerId){
        return triggers[i].getTriggerSourceId();
    }
  }
}

然后在您的响应触发器中写入:

function responseTrigger(e) {
  var realEvent = getFileByTriggerId(e.triggerUid);
  var form = FormApp.openById(realEvent);
  var title = form.getTitle();
}

关于google-apps-script - 来自 FormResponse 的表单标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42161315/

相关文章:

google-apps-script - 如何在 Google Apps jsdoc 描述中强制换行

google-sheets - Google Sheet API v4获取空单元格

google-apps-script - Google Calendar App 脚本定期将数据拉入电子表格

javascript - GAS - Apps 脚本检索上次创建的文件夹 ID

javascript - 使用 GAS 的 google doc 到 pdf 转换忽略文本编辑

MySQL:DROP PARTITION 是否触发了 TRIGGER ON DELETE?

mysql - 选择变量中引用的列

mysql - 插入或更新行时更新 mysql 表

javascript - 我们需要什么来授权 Google 应用脚本? (因为脚本甚至需要授权才能使用)

google-apps-script - 从工作表中自动填充 Google 文档的当前日期