在对象电子表格

时间:2018-08-30 12:38:55

标签: google-apps-script google-sheets google-form

此错误消息使我发疯。这可能很简单,但我是新手。感谢您能提供的任何帮助。

该计划适用于我们的员工通过google表单提交的设备检查。它应从提交的电子表格中获取原始数据,检查是否有特定于该设备的电子表格-如果有,则应制作一张带有检查日期的新表格,如果没有,请注明检查日期。应该制作一个新的电子表格,其标题为设备的单位编号。然后,我希望将原始数据复制到新的电子表格/工作表中。

这部分完成后,我需要编写代码以将新工作表上的原始数据格式化为更易读和用户友好的格式-但我还没有。

问题是当我尝试将标题值插入到新工作表中(第17行)时-“ TypeError:在对象Spreadsheet中找不到函数setValues。(第17行,文件“代码”)”

这是我到目前为止的代码:

    function onFormSubmit() {
  // onFormSubmit
  // get submitted data
  var ss = SpreadsheetApp.openById("1PieNQjjgjsZIEhTwmzGN9BcUXPSscWnWnnYL8XvjpTA");
  var sheet = ss.getSheetByName("Submissions");
  var row = sheet.getLastRow();
  var Col = sheet.getLastColumn();
  var headings = sheet.getRange(1,1,1,Col).getValues();
  var lastRow = sheet.getRange(row, 1, 1, Col);
  var UnitNumber = sheet.getRange(row,3,Col).getValue(); 
  // check if username has sheet
  if(ss.getSheetByName(UnitNumber)){
    var DrillSheet = ss.getSheetByName(UnitNumber);
    // if not make
  } else {
   var DrillSheet = SpreadsheetApp.create(UnitNumber); 
    DrillSheet.getRange(1,1,1,Col).setValues(headings);
  }
  // copy submitted data to Drill sheet
  DrillSheet.appendRow(lastRow.getValues()[0]);
  DrillSheet.appendRow(['=CONCATENATE(B6," ",B5)']);
  DrillSheet.appendRow(['=TRANSPOSE(B1:2)']);
}

预先感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

创建新电子表格时,需要定义要将标题添加到哪个单独的工作表。您需要使用.getSheetByName()获取工作表对象。第一张工作表始终称为“ Sheet1”,因此您可以在脚本中按名称获取它。一个简单的解决方法是将第17行更改为:

DrillSheet.getSheetByName('Sheet1')getRange(1,1,1,Col).setValues(headings);