在Google表单中汇总数字输入

时间:2016-12-02 00:46:34

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

SOF朋友,

我有一个表单,其中包含一些日期和字符串字段中的一组数字字段。

如何将数字值相加并将总数作为列添加到电子表格中以保存回复?我在哪里写脚本?在表单级别或电子表格级别?

这是我目前所拥有的,作为表单提交的触发器,它不起作用:

function myFunction() {
  Logger.log("Spreadsheet: %s", SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getName());
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();

  //sheet.setActiveSelection("M1:M").clear();
  var range = sheet.getDataRange();
  var values = range.getValues();
  var lastrow = range.getLastRow(); 
  var lastcolumn = range.getLastColumn();
  Logger.log(lastrow);
  Logger.log(lastcolumn);
  Logger.log(values[lastrow][10]);
  var coll = values[lastrow][6];
  var drv = values[lastrow][7]; 
  var clnr = ((values[lastrow][8] != "")? values[lastrow][8]:0);
  var dsl = values[lastrow][10];
  var gen = values[lastrow][11];
  var tot = coll + drv + clnr + dsl + gen; 
  var singlecell = sheet.getRange(lastrow, 13);
  singlecell.setValue(tot);
  Logger.log(tot);
}

1 个答案:

答案 0 :(得分:1)

代码

要添加到绑定到电子表格的项目的代码示例。

function sumFormResponseItems(e) {
  var firstSummand = parseInt(e.namedValues['First summand'][0],10);
  var secondSummand = parseInt(e.namedValues['Second summand'][0],10);
  var range = e.range;
  var row = range.getRow();
  var lastColumn = range.getLastColumn();
  range.getSheet().getRange(row,lastColumn+1).setValue(firstSummand + secondSummand )
}

添加代码后,添加一个表单提交触发器以使其正常工作。

解释

上面的代码只对提交的响应的值进行求和,而不是对整个工作表数据范围进行相同的操作,这可能会使您返回超出的执行时间限制错误,因为您的代码是开放式引用。

关于是否将脚本添加到电子表格或表单中,如果没有更多详细信息,任何答案都将基于意见。

参考