gpt4 book ai didi

google-apps-script - 如何获取已移动的范围?

转载 作者:行者123 更新时间:2023-12-05 03:19:42 27 4
gpt4 key购买 nike

假设我得到范围 A2:B2:

sheet.getRange("A2:B2").getValues();

但我在 A1:B1 下添加了一行,所以现在我的值在 A3:B3 中

Apps 脚本是否可以动态捕捉到我的值现在在另一个范围内?

如果没有,关于如何动态获取移动行范围的任何替代想法?

最佳答案

我相信你的目标如下。

  • 您想知道“A2:B2”范围内的值是否被移动。

在这种情况下,如何使用命名范围、OnChange 触发器和 PropertiesService?我认为当使用这些时,您的目标可能能够实现。示例脚本准备好后,变成如下。

用法:

1。创建命名范围。

作为示例,请为单元格“A2:B2”创建一个命名范围作为“sampleNamedRange1”。 Ref

2。准备示例脚本。

请将以下脚本复制并粘贴到电子表格的脚本编辑器中。而且,please install OnChange trigger to the function installedOnChange .

function installedOnChange(e) {
var originalRange = "A2:B2";
var nameOfNamedRange = "sampleNamedRange1";

if (!["INSERT_ROW", "REMOVE_ROW"].includes(e.changeType)) return;
var p = PropertiesService.getScriptProperties();
var pv = p.getProperty("range");
if (!pv) pv = originalRange;
var range = e.source.getRangeByName(nameOfNamedRange);
var a1Notation = range.getA1Notation();
if (a1Notation != pv) {
p.setProperty("range", a1Notation);
Browser.msgBox(`Range was changed from ${pv} to "${a1Notation}". Original range is "${originalRange}".`);
}
// var values = range.getValues(); // The values are not changed because of the named range.
}

3。测试。

在这种情况下,请执行 我在 A1:B1 下添加了一行。通过这种方式,脚本由 OnChange 触发器自动运行。而且,您可以看到对话框。您可以看到如下图所示的演示。

enter image description here

注意事项:

  • 这是一个简单的示例脚本。所以,请根据您的实际情况进行修改。

引用资料:

添加:

从讨论中,我了解到您想使用命名范围的名称检索特定工作表的命名范围。在这种情况下,示例脚本如下。

使用工作表名称时

const range = SpreadsheetApp.getActive().getSheetByName("sheetName").getRange("nameOfNamedRange");

const range = SpreadsheetApp.getActive().getSheetByName("sheetName").getNamedRanges().find(n => n.getName() == "nameOfNamedRange").getRange();

使用事件工作表时

const range = SpreadsheetApp.getActiveSheet().getRange("nameOfNamedRange");

const range = SpreadsheetApp.getActiveSheet().getNamedRanges().find(n => n.getName() == "nameOfNamedRange").getRange();

关于google-apps-script - 如何获取已移动的范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73372150/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com