当前位置: 首页 > 知识库问答 >
问题:

如何使用Google应用程序脚本将公式添加到Google表单?

楚威
2023-03-14

如何添加公式,如:

=SUM(A1:A17)

到一系列字段使用谷歌应用脚本谷歌表格?

共有3个答案

段宏毅
2023-03-14

设置,复制

例如,如果您希望A18保存公式' =SUM(A1:A17)'并且B列到Z列也是如此,您可以在A18中设置公式,然后将A18复制到B18:Z18。同样的事情也适用于更复杂的范围。最简单的方法是使用宏记录器,然后检查您的脚本。

var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0];
sheet.getRange('A18').setFormula('=SUM(A1:A17)');
sheet.getRange('A18').copyTo(sheet.getRange('B18:Z18'));
//There are other parameters to 'copyTo' that you can use if needed
吕嘉荣
2023-03-14

这是一个更一般的答案。

假设您要使用一个公式填充 B 列,该公式是列 A 的值加 1。例如,单元格 B1 中的公式将是“=A1 1”。

让我们规定范围的第一行是1,最后一行是20。

// create an array the same size as the number of rows.
var data = [];
// populate the array with the formulas.
for (var i=0; i < 20; i++)
{
  // note that as usual, each element of the array must itself be an array 
  // that has as many elements as columns. (1, in this case.)
    data[i] = ['=A' + (i+1).toString() + ' + 1 ' ];
}
// set the column values.
sheet.getRange(1,2,20,1).setFormulas(data);

使此工作适用于不同数量的行和不同的起始行,是使用变量而不是在此示例中硬编码的1和20的问题。

裴意
2023-03-14

这是使用所选单元格的 setFormula 完成的。下面是如何执行此操作的示例。

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];

var cell = sheet.getRange("B5");
cell.setFormula("=SUM(B3:B4)");

您也可以使用setFormulaR1C1来创建R1C1符号公式。下面的例子。

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];

var cell = sheet.getRange("B5");
// This sets the formula to be the sum of the 3 rows above B5
cell.setFormulaR1C1("=SUM(R[-3]C[0]:R[-1]C[0])");

若要将多个公式添加到多个字段,请使用setFormulas。下面的例子

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];

// This sets the formulas to be a row of sums, followed by a row of averages right below.
// The size of the two-dimensional array must match the size of the range.
var formulas = [
  ["=SUM(B2:B4)", "=SUM(C2:C4)", "=SUM(D2:D4)"],
  ["=AVERAGE(B2:B4)", "=AVERAGE(C2:C4)", "=AVERAGE(D2:D4)"]
];

var cell = sheet.getRange("B5:D6");
cell.setFormulas(formulas);
 类似资料:
  • 背景: 我正在使用Eclipse Lunar和谷歌应用程序引擎插件来尝试建立一个网站。一切都进行得很顺利,直到我想保存一些数据,所以我遵循了使用Objectify的教程。我下载了Objectify jar并将其放入“/war/WEB-INF/lib/”中,然后将其添加到类路径中。然后我做了一个类,并创建了几个我自己的测试类(现在可以假设这些类不包含错误)。我也可以成功部署。 问题 当试图加载使用O

  • 我对谷歌脚本非常陌生,因此非常感谢任何帮助。 我被困在如何将我的公式应用到Google表单中的整个列上,该公式使用联接和筛选。 我的公式是:=JOIN(“,”,FILTER(N:N,B:B=R2)) 我需要将这个公式添加到列S中的每个单元格(除了标题单元格),但是每行都有“R2”的变化,所以在第3行是“R3”,第4行是“R4”等。 这个公式在谷歌工作表本身,但因为我有一个新的更新版本每天自动更换的

  • 我正在使用GoogleApps脚本将来自GoogleSheets的问题添加到GoogleForm中。列表从两个单独的数组中读取,并作为单独的网格类型问题添加。我还将工作表设置为表单结果的目标。 当我运行脚本时,表单得到了完美的更新。如果要添加10个项目,则在表单中添加10个问题。但是,在链接的表单响应表中,经常会添加标题为“[第1行]”的其他列。每次运行脚本时,附加列的数量及其位置都会发生变化。我

  • 我试图通过谷歌应用程序脚本调用谷歌表单API。例如,我遵循此处提供的说明: https://developers.google.com/sheets/api/quickstart/js 我已经通过我的谷歌云平台项目生成了客户端ID和API密钥,正如其他地方建议的那样。 现在,我已经创建了一个包含两个文件的谷歌应用程序脚本,ode.gs文件和一个名为index.html的文件,其中包含从上面的谷歌表

  • 我正在使用谷歌应用程序脚本自动将附件从电子邮件保存到唯一的谷歌驱动器文件夹,具体取决于邮件过滤到的标签。 到目前为止,我已经设法使用我在网上找到的一些代码片段获得了消息ID。然而,我被困在试图访问消息的正文 提前感谢你的帮助。

  • 我正在开发一个GoogleApps脚本电子表格应用程序,我希望该程序具备的能力之一是根据来自两个不同列的数据自动排序一系列表单响应。所以我想按第16列中的数据排序,然后按第1列排序。我可以使用以下方法手动实现此功能:https://drive.googleblog.com/2010/06/tips-tricks-advanced-sorting-rules-in.html 目前我正在运行函数与第一

  • 我有一个谷歌表单,在a列中,我需要用无替换按钮上的文本。该列在几个不同的行中具有需要保持不变的标题。我写了以下脚本: 当我尝试运行脚本时,会出现以下错误:数据中的行数与范围中的行数不匹配。数据有1,但范围有2。 我知道这与具有比其他行更多列的行有关,但不确定如何修复代码。

  • 我使用脚本将数据从MySQL数据库导入到工作表中。在导入过程中,其他具有重公式的工作表(vlookup、sumifs、filter)会不断重新计算,因此需要花费很长时间。我想在MySQL数据完全导入后,通过脚本插入公式。 为了简化此过程,我想将工作表上的所有公式(这是一个很长的工作表)提取到一个文件中,并将提取的数据格式化为以下方式:示例:从工作表“摘要”中提取数据: 循环检查工作表中的每个单元格