首页 > 解决方案 > 完成 Google 表单后,如何在 Google 电子表格中现有工作表的末尾创建新行?

问题描述

我正在尝试将链接的 Google 表单中的回复保存到现有的 Google 表格中。更准确地说,电子表格显示员工的休假请求以及员工的休假原因、请求的天数、请求的日期、经理的姓名等。基本上,表格要求员工提供这些信息。
谢谢!

我在这里想要实现的是将响应信息保存到已经创建的电子表格中。根据谷歌的文档,仅有的两个选项是:
1)创建一个新的电子表格:为谷歌表格中的回复创建一个电子表格
2)选择现有的电子表格:从谷歌表格中的现有电子表格中选择以存储回复
如果选项 #2,我可以将回复保存在同一个电子表格中,但它将它们保存在新工作表中;我正在尝试将响应保存在 一张表中。

我知道 Google Form 有一个脚本编辑器。是否可以运行将响应发送到电子表格的函数?也许是这样的?

function sendToSpreadSheet(e)
{
  var ss = SpreadsheetApp.openById("abc1234567");
  // Send response to spreadsheet

  // Populate cells accordingly
}

我对谷歌表单没有太多经验,所以我不确定如何解决这个问题。非常感谢任何建议。

标签: javascriptgoogle-apps-script

解决方案


试试这个:

您必须提供电子表格 ID 和 SheetName。并为电子表格创建一个 onFormSubmit 触发器。

function saveResponse(e) {
  SpreadsheetApp.getActive().getSheetByName('SheetName').append(e.values);
}

或者

function saveResponse(e) {
  SpreadsheetApp.openById('id').getSheetByName('SheetName').append(e.values);
}

您可以使用以下内容创建触发器:

function createSetResponseTrigger(){
  createTrigger('setResponse');
}

function createTrigger(funcname) {
  if(!isTrigger(funcname)) {
    ScriptApp.newTrigger(funcname).forSpreadsheet(SpreadsheetApp.getActive()).onFormSubmit().create();
  }
}

还有这个

function isTrigger(funcName){
  var r=false;
  if(funcName){
    var allTriggers=ScriptApp.getProjectTriggers();
    for(var i=0;i<allTriggers.length;i++){
      if(funcName==allTriggers[i].getHandlerFunction()){
        r=true;
        break;
      }
    }
  }
  return r;
}

或者您可以使用编辑菜单/当前项目触发器手动创建它。


推荐阅读