以 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或表格中,如果没有更多细节,任何答案都将基于意见。
参考资料
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或表格中,如果没有更多细节,任何答案都将基于意见。