2017-01-09 33 views
2

道歉,因为我是初学者编码。我有兴趣使用Google Apps脚本来自动分析Google表单响应。我可以使用Apps脚本将公式添加到Google表单响应中吗?

simple example我是答复的形式要求人们在电子表格:

1)有多少球员有?
2),他们完成了[1,2,等]

在提交我想运行一个脚本形式的计算怎么可能,他们获得的积分并把这个值下一个可用的列(E列在这个例子)。

我已经尝试编写我的第一个Apps脚本来自动执行此过程,但没有成功。

示例代码:

function onFormSubmit(e) { 
var ss = SpreadsheetApp.getActiveSpreadsheet(); 
var sheet = ss.getSheetByName("Form Responses Master"); 
var players = e.values[2]; 
var place = e.values[3]; 
var positionPoints = e.values[4]; 
var positionPoints = (players - place + 1); 

return positionPoints; 
} 

我知道有可用的解决办法通过创建重复的网页,但我希望有人也许能告诉我如何代码应用程序脚本的解决方案,希望我可能会更好地理解编码过程。

回答

0

您可以在响应收集器电子表格中编写自己的appscript,而不是在窗体的脚本编辑器中编写代码。

因此,请转到您的回复表格并粘贴此代码。

function myFunction() 
{ 
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Form Responses Master"); 
    var rowNo = sheet.getLastRow(); 
    var colNo = sheet.getLastColumn(); 
    sheet.getRange(rowNo, colNo).setValue("=(C"+rowNo+"-D"+rowNo+")+1"); 
} 

现在,转到资源 - >当前项目触发器。点击添加新的,并设置下拉列表中的这些值:myFunction - 从电子表格 - 在表单提交。

你就完成了。每当提交新的回复时,位置点将自动计算。

在这里, 可变工作表获取您可以执行的不同工作表操作的活动电子表格。

如代码中所示,rowNo和colNo只是分别获取电子表格中写入内容的最后一行/列的值。

而且,要在列'E'中设置公式,可以使用setValue。因此,在第二行的情况下,"=(C"+rowNo+"-D"+rowNo+")+1"将被转换为(C2-D2)+1,以此类推下一行。

getRange仅用于告诉脚本在特定单元格内写入公式。

+0

非常感谢您的帮助Shyam。 –

+0

不客气:),乐意帮忙! –

相关问题