首页 > 解决方案 > 如何在单独的单元格中为每天收到新回复的 Google 表单添加价值?Google Apps 脚本

问题描述

B列值将添加到A列的工作表中

当有人添加表单响应时

谢谢你帮助我

标签: google-apps-scriptgoogle-sheets

解决方案


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 为每个表单创建一个触发器。并让它触发一个函数,该函数读取百分比并将其放入与该表单的响应表相对应的最后一行输入。

为此,您应该使用如下脚本:

  1. 从您的工作表中使用工具 > 脚本编辑器创建一个脚本
  2. 为“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);
}
  1. 为“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();
}
  1. 对每个表单重复这些步骤。

推荐阅读