完成Google表单后,如何在Google Spreadsheets中现有工作表的末尾创建新行?

时间:2019-05-09 18:52:45

标签: javascript google-apps-script

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

我在这里想要实现的是将响应信息保存到已经创建的电子表格中。根据Google的documentation,只有两个选项:
1)创建一个新的电子表格:为在Google表格中的响应创建一个电子表格
2)选择现有电子表格:从Google表格中的现有电子表格中进行选择以存储回复
对于选项#2,我可以将响应保存在同一电子表格中,但可以将其保存在新工作表中。我正在尝试将响应保存为相同 工作表。

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

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

  // Populate cells accordingly
}

我对Google表单没有太多经验,所以不确定如何解决此问题。任何建议都将不胜感激。

1 个答案:

答案 0 :(得分:1)

尝试一下:

您必须提供电子表格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;
}

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