google-apps-script - 保留/复制公式,以便在添加新响应时自动应用 Google Apps 脚本
问题描述
我有工作表,其中有列,我在其中应用了某些公式来计算列中的单元格值。它连接到谷歌电子表格响应。每当添加新响应时,都会在行中输入数据。我试图处理脚本,以便每当输入新记录时都应该自动从上面的行中复制公式,这样我就不需要向下拖动了。
我有列
一个 | 乙| C | D
23 | 22 | 45 | 1
在 CI 列中,我尝试添加 A 和 B,并在 DI 中减去值。
我使用以下代码复制公式。但它不起作用。它基本上复制了与上一行相同的值。有人可以帮我找出错误并修复代码以获得正确的输出。
谢谢
var ss = SpreadsheetApp.getActive();
function onOpen() {
var menu = [{name:"Insert New Record",
functionName:"insertRecord"}];
ss.addMenu("Options", menu);
}
function insertRecord() {
var sh = ss.getActiveSheet();
var lRow = sh.getLastRow();
var lCol = sh.getLastColumn();
var range = sh.getRange(lRow,1,1,lCol);
var formulas = range.getFormulas();
sh.insertRowsBefore(lRow, 1);
var newRange = sh.getRange(lRow, 1, 1, lCol);
range.copyTo(newRange);
newRange.setFormulas(formulas);
}
解决方案
range.copyTo(newRange);
尝试使用 //注释掉该行
,如下所示:
//range.copyTo(newRange);
该行正在将数据从范围 a 复制到范围 b。
然后,您将公式从范围 a 复制到范围 b。
如果您之后立即用公式替换数据,则无需复制数据。
如果这不起作用,请尝试使用 .getFormula 和 .setFormula 而不是 .getFormulas 和 .setFormulas。.getFormulas 会将数据视为与 .getFormula 完全不同的数据集,请在此处阅读文档:https ://developers.google.com/apps-script/reference/spreadsheet/range#getformula
简而言之,.getFormula 是一个字符串,其中 .getFormulas 保存为包含字符串的二维数组。
推荐阅读
- scala - 保存不带括号的文件
- angular - 如何以编程方式从字符串中渲染多个 Angular 7 组件?
- elasticsearch - 如何限制 Elasticsearch 术语查询中每个术语返回的文档数量?
- r - 将多行组压缩为单行,保持 R 中 x 最高的值?
- arrays - 如何重新分配二维数组的内容?
- node.js - 为什么我的删除函数会导致未定义值错误?
- vba - 访问 VBA 运行多个选择查询并导出到不同工作表上的 excel
- python - Sqlite3:OperationalError:靠近“TABLE”:语法错误
- c - 在标记粘贴的宏上使用#ifdef?
- regex - 正则表达式绝对初学者:过滤字母数字