【问题标题】:Form Responses Creating New Google Sheets Tabs Rather then Bucketing表单响应创建新的 Google 表格选项卡而不是分桶
【发布时间】:2015-11-05 21:26:20
【问题描述】:

我有一个 Google 表格,它存储了我的表单的答案,理论上应该通过从我的表单标签为“更改位置”的下拉列表中选择的值来存储回复。到目前为止,脚本准确地从每个响应创建一个新工作表,并将包含该响应信息的行添加到新创建的工作表,但它为每个响应创建一个新工作表,而不是添加包含从“更改位置”中选择的相同值的添加响应"到同一张纸上。

我认为这是因为destSheet 变量(查找“更改位置”的值)和getSheet() 函数之间存在脱节,但我可能错了。

这是我的代码:

function onSubmit(e) {

  //Open Marketing - Discoveries and Changes - v1
  var sheet = e.range.getSheet();


  //Return Spreadsheet that contains this sheet
  var ss = sheet.getParent();

  //Open Marketing - Discoveries and Changes - v1
  var form = FormApp.openByUrl(ss.getFormUrl());



  //Destination sheet based on "Location of Change"
  var destSheet = getSheet(ss, e.namedValues["Location of Change"]);

  //Store response in destination sheet
  destSheet.appendRow(e.values);

  function getSheet( spreadsheet, sheetName, headings) {
    spreadsheet = SpreadsheetApp.getActive();
    var sheet = spreadsheet.getSheetByName(sheetName);
    if (sheet == null) {
      sheet = spreadsheet.insertSheet(sheetName);
      if (headings && headings.constructor === Array) {
        sheet.getRange(1,1,1, headings.length).setValues([headings]);
      }
    }
    return sheet;
  }


}

【问题讨论】:

    标签: google-apps-script google-sheets


    【解决方案1】:

    我认为问题在于e.namedValues 将所有值存储为数组,即使只有一个值也是如此。所以e.namedValues["Location of Change"]应该是

    e.namedValues["Location of Change"][0]

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多