我可以使用 Apps 脚本将公式添加到 google 表单响应吗?

Can I add a formula to a google form response using Apps Script?

抱歉,我是编码初学者。我有兴趣使用 Google Apps 脚本自动分析 Google 表单响应。

我拥有的 simple example 是用于询问人们的表单的回复电子表格:

1) 有多少玩家?
2) 他们完成的地方 [1st, 2nd, etc,]

在提交表单时,我想 运行 一个脚本来计算他们收到多少分并将此值插入下一个可用列(在本例中为 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;
}

我知道创建重复页面有一些解决方法,但我希望有人可以就如何在 App 脚本中编写解决方案提供建议,希望我能更好地理解编码过程.

您可以在响应收集器 spreadsheet 本身中编写您的应用脚本,而不是在表单的脚本编辑器中编写您的代码。

因此,转到您的回复 sheet 并粘贴此代码。

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 - From Spreadsheet - On form submit.

大功告成。每当提交新的回复时,都会自动计算位置点数。

在这里, 变量 sheet 获取您可以执行的不同 sheet 操作的有效价差 sheet。

rowNo 和 colNo 如代码中所示,只是简单地分别获取 spreadsheet 的 last row/column 的值,其中写了一些东西。

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

getRange 只是用来告诉脚本在特定单元格内写入公式。