google-apps-script - 如何在单独的单元格中为每天收到新回复的 Google 表单添加价值?Google Apps 脚本
问题描述
我有 1 个由许多工作表(Z、Y、C ....)组成的电子表格。
每个工作表都是每个销售人员的示例答案
他们将按每个客户的百分比进行划分
当他们达到目标时,他们将提高销售额的百分比,这个百分比由于我决定并直接添加到工作表中。它仍然是手动完成的,有时是错误的。
表格的答案是 3 列(A、B、C),我将在 D 列中添加利润分享。
所以我想我会创建一个新的工作表,其中 A 列作为工作表的名称,B 是利润。如图所示分享(%)。
将响应添加到表单后,应用程序脚本将自动将等于利润分享列中当前数字的工作表百分比添加到 D 列。
并且当利润分享发生变化时,后续响应将受到影响,而不会更改先前存在的响应。
谢谢你帮助我
解决方案
QUERY
我相信您可以通过使用该功能来达到您想要的结果。
例如:
在名为“Nhân viên A”的工作表中,您可以将查询公式编写为:
QUERY('Tổng hợp'!A2:B;"select B where A = 'Nhân viên A'";-1)
这将为您提供“Tổng hợp”表的 B 列中与“Nhân viên A”相对应的百分比。
此外,我们可以将它添加为 anARRAYFORMULA
以便它自动扩展,为此我们也应该使用IF
条件。
要完成,您应该得到每个表单响应表并在单元格中添加以下公式D2
=ArrayFormula(SI(A2:A <> "";query('Tổng hợp'!A2:B;"select B where A = 'Nhân viên A'";-1);""))
您应该将“Nhân viên A”替换为每个响应表的名称。
更新:
要在提交表单时烘焙“Tổng hợp”中列出的百分比,您应该使用其 Id 为每个表单创建一个触发器。并让它触发一个函数,该函数读取百分比并将其放入与该表单的响应表相对应的最后一行输入。
为此,您应该使用如下脚本:
- 从您的工作表中使用工具 > 脚本编辑器创建一个脚本
- 为“Nhân viên A”形式编写如下函数:
function bakePercentageA() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
// Where is the percentage range?
var range = "B2";
// Get the corresponding percentage value
var percentage = ss.getSheetByName("Tổng hợp").getRange(range).getValue();
// Get the range to put the percentage value in
var clientSheet = ss.getSheetByName("Nhân viên A");
var lastRow = clientSheet.getLastRow();
// Bake the value into the range
clientSheet.getRange(lastRow, 4).setValue(percentage);
}
- 为“Nhân viên A”表单创建一个触发器,该触发器通过运行一次函数来触发前一个函数,如下所示:
function createTriggers() {
var formA = FormApp.openById('<Nhân viên A form Id>');
ScriptApp.newTrigger('bakePercentageA')
.forForm(formA)
.onFormSubmit()
.create();
}
- 对每个表单重复这些步骤。