以 Google 形式汇总数字输入

Sum up numeric inputs in a 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);
}

代码

要添加到与传播绑定的项目的代码示例sheet。

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 )
}

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

说明

以上代码仅对提交的响应的值求和,而不是对整个 sheet 数据范围执行相同的操作,这可能会 return 您超出执行时间限制错误,因为您的代码使用开放式参考。

关于是否将脚本添加到传播sheet或表格中,如果没有更多细节,任何答案都将基于意见。

参考资料