jup*_*can 7 forms google-sheets google-apps-script google-sheets-api
我想建立一种自动系统来更新一些比赛结果以获得冠军.我有一个自动电子表格,所有结果都显示但是我需要花费很多时间来更新所有结果,所以我想知道是否可以制作表格以便更容易地更新它们.
在表格中,我将输入他在比赛中赢得的车手名称和数量.冠军每个月有4场比赛所以是的,我的问题是你们是否知道使用表格更新现有数据(存储在电子表格中)的方法.让我们说在第一场比赛中,车手'X'赢得了10分.我将在表单中插入此数据,然后从电子表格中调用它以显示它,这是正确的.当我想要更新第二场比赛结果等问题时.如果驾驶员'X'在第二场比赛中获得12分,是否有办法更新该驾驶员之前的10分并改为22分?或者我可以自动将第二场比赛结果添加到第一场比赛中吗?我的意思是,如果我在表单上插入第二个比赛结果,它可以查找驱动程序'X'条目并将此点添加到它以前的那些点.Dunno,如果有可能的话.
也许我可以用另一种方式做到这一点.任何帮助都感激不尽!谢谢.
也许我错过了您的问题中的某些内容,但我不太理解Harold的答案...这是严格执行您要求的代码,它计算在表单中输入的4个数字的总累加值并将其显示在电子表格上。
我将4个问题称为“ 比赛编号1 ”,“ 比赛编号2 ” ...,结果出现在第2行,因此您可以设置标题。
我去除了任何非数字字符,以便您可以更自由地键入响应,仅保留数字。
这里形成和SS这里 (在Sheet1原始结果和Sheet2的计数)
脚本进入电子表格,并由onFormSubmit触发器触发。
function onFormSubmit(e) {
var sh = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet2');
var responses = []
responses[0] = Number(e.namedValues['race number 1'].toString().replace(/\D/g,''));
responses[1] = Number(e.namedValues['race number 2'].toString().replace(/\D/g,''));
responses[2] = Number(e.namedValues['race number 3'].toString().replace(/\D/g,''));
responses[3] = Number(e.namedValues['race number 4'].toString().replace(/\D/g,''));
var totals = sh.getRange(2,1,1,responses.length).getValues();
for(var n in responses){
totals[0][n]+=responses[n];
}
sh.getRange(2,1,1,responses.length).setValues(totals);
}
Run Code Online (Sandbox Code Playgroud)
编辑:我更改了代码,使您可以轻松更改响应数...范围将自动更新。
编辑2:一个接受结果为“ if”条件的空响应的版本:
function onFormSubmit(e) {
var sh = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet2');
var responses = []
responses[0] = Number((e.namedValues['race number 1']==null ? 0 :e.namedValues['race number 1']).toString().replace(/\D/g,''));
responses[1] = Number((e.namedValues['race number 2']==null ? 0 :e.namedValues['race number 2']).toString().replace(/\D/g,''));
responses[2] = Number((e.namedValues['race number 3']==null ? 0 :e.namedValues['race number 3']).toString().replace(/\D/g,''));
responses[3] = Number((e.namedValues['race number 4']==null ? 0 :e.namedValues['race number 4']).toString().replace(/\D/g,''));
var totals = sh.getRange(2,1,1,responses.length).getValues();
for(var n in responses){
totals[0][n]+=responses[n];
}
sh.getRange(2,1,1,responses.length).setValues(totals);
}
Run Code Online (Sandbox Code Playgroud)