【发布时间】:2018-12-05 09:56:57
【问题描述】:
我一直很难弄清楚这一点。我意识到对于那些遵循 GAS 标签的人来说,这可能比平时更基本,但是非常感谢任何帮助。
如果我将更大的任务分解成组件,我现在的目标是自动更新几个命名范围。
电子表格上有一个名为“DataImport”的选项卡。 DataImport 有 10 列,所有 1000 行长。每列都有一个命名范围,例如卷心菜 (A2:A1000)、狗 (B2:B1000) 等。
There is a script attached to a new menu item "Update Data" that when selected imports a csv file into DataImport tab meaning that the length of the data set will grow.
如何告诉工作表将每个命名范围更新为数据长度?因此,如果原始命名范围“卷心菜”是 A2:A1000,并且在更新之后,数据现在实际上与 A2:A1500 一样长,我将如何告诉工作表更新范围卷心菜?
我在网上找到了一段sn-p的代码,开始摆弄:
function testNamedRange() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var range = ss.getRange('DataImport!A:A');
var data_len = range.length;
SpreadsheetApp.getUi().alert(data_len); // "alert just gives "undefined"
ss.setNamedRange('TestRange', range);
var rangeCheck = ss.getRangeByName('TestRange');
var rangeCheckName = rangeCheck.getA1Notation();
}
我的想法是,如果我可以使用自定义菜单功能获取更新后的数据长度,然后我可以使用 setNamedRange() 来更新卷心菜范围。
我真的迷路了,我想这比我想象的要简单。
如何将命名范围的卷心菜更新为 UpdateData 列 A 中的数据长度?
【问题讨论】:
-
您的意思是在使用新数据更新工作表之后(将新数据附加到现有数据)?然后在运行更新脚本后,您可以简单地使用函数:getRangeByName(cabbages) 来检索新的值范围。希望有帮助!
-
道格,当你说“我想这比我想象的要简单”时,你错了。您不能修改命名范围。您必须先删除它们,然后重新添加新定义。要获得一个想法,请参阅:script.google.com/macros/d/MpU2iJHZ63Z00Oijw_8tYTxcaARnGcqu_/…
-
没错。根据新高度重新创建范围。
-
为什么不只根据列来定义范围?例如。而不是 Cabbages A2:A1000 将其定义为 A2:A。通常,如果您将行插入命名范围,范围定义会自动更改。
标签: google-apps-script google-sheets