我有一个Google脚本程序,可以从Google电子表格中获取信息。变量从特定单元格获取数据。我的问题是如何使我的编码适应性强,因此如果添加或减去行或列,代码将知道在哪里寻找正确的信息?即emailaddresses(var AthEmailData)和Names(AthPresData)

这是一个例子

//Athens Variables
  var dataA = sheet.getRange(10, 2);
  var totalA = dataA.getValue();
  var AthPresData = sheet.getRange(3, 8)
  var AthPres = AthPresData.getValue();
  var AthEmailData = sheet.getRange(3, 9);
  var AthEmail = AthEmailData.getValue();

最佳答案

即使更改了AthPres(H3)和AthEmail(I3)的范围,也要检索sheet.getRange(3, 8)sheet.getRange(3, 9)的值。


如果我的理解是正确的,那么如何使用NamedRange?在使用NamedRange的情况下,即使更改设置为命名范围的范围,NamedRange的范围也会自动修改,并且可以使用NamedRange检索值。我认为您的情况可能有几个答案。因此,请将此视为其中之一。

流程如下。


将“ H3”和“ I3”设置为NamedRange。


从您的问题中使用“ H3”和“ I3”。

使用NamedRange检索值。


示例脚本:

1.设置NamedRange

首先,请使用此脚本设置NamedRange。当然,您也可以将“ H3:I3”设置为一个NamedRange。

function myFunction1() {
  var s = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = s.getActiveSheet();
  var AthPresData = sheet.getRange(3, 8); // H3
  var AthEmailData = sheet.getRange(3, 9); // I3
  s.setNamedRange("AthPresData", AthPresData); // Set "H3" to NamedRange as "AthEmailData"
  s.setNamedRange("AthEmailData", AthEmailData); // Set "I3" to NamedRange as "AthEmailData"
}


2.检索值

设置NamedRange之后,您可以使用此脚本使用NamedRange检索值。即使范围从“ H3”和“ I3”到其他范围,也可以使用NamedRange检索值。

function myFunction2() {
  var s = SpreadsheetApp.getActiveSpreadsheet();
  var names = ["AthPresData", "AthEmailData"];
  var namedRanges = s.getNamedRanges();
  for (var i = 0; i < namedRanges.length; i++) {
    for (var j = 0; j < names.length; j++) {
      if (namedRanges[i].getName() == names[j]) {
        var value = namedRanges[i].getRange().getValue();
        Logger.log("%s, %s", names[j], value)
      }
    }
  }
}


注意:


这是一个简单的示例脚本。因此,请根据您的情况进行修改。
您还可以在电子表格上手动设置NamedRange。


参考文献:


setNamedRange
NamedRange


如果我误解了您的问题,请告诉我。我想修改它。

10-04 16:43