自适应电子表格数据收集

时间:2019-01-05 19:33:15

标签: javascript google-apps-script google-sheets

我有一个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();

1 个答案:

答案 0 :(得分:1)

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

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

流程如下。

  1. 将“ H3”和“ I3”设置为NamedRange。
    • 从您的问题中使用“ H3”和“ I3”。
  2. 使用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。

参考:

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