首页 > 解决方案 > 有没有更简单的方法来实现缺少的“getNamedRange(....)”方法?

问题描述

在 Google Apps 脚本中,电子表格和表格上有一个方法 getNamedRanges(),它返回命名范围的列表。但是没有返回 SINGLE 命名范围的 getNamedRange("Name") 。

这对我来说似乎很奇怪。

为了解决这个问题,我正在使用这个复杂的过程:

function testing()
{
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var nameOfNamedRange = "NameOfMyNamedRange";

  var namedRanges = ss.getNamedRanges();

  /* ###### THIS IS WHAT I HAVE TO DO ######### */
  for (i = 0; i<namedRanges.length; ++i)
  { var nRange = namedRanges[i];
    if ( nRange.getName() == nameOfNamedRange )
      {
        /* Process nRange
        doSomething(nRange);
        */
        Logger.log(nRange.getName());
      }
  }

/* ############ THIS IS WHAT I'D LIKE TO DO (or something similar) ##########
    var nRange = ss.getNamedRange("NameOfMyNamedRange") // ...Range   not ...Ranges

*/
}

有没有更简单的方法来做到这一点?我忍不住想我错过了一些明显的东西。

标签: google-apps-scriptgoogle-sheetsnamed-ranges

解决方案


例如,使用 的方法怎么样getRangeByName()

修改后的脚本:

var ss = SpreadsheetApp.getActiveSpreadsheet();
var nameOfNamedRange = "NameOfMyNamedRange";
var nRange = ss.getRangeByName(nameOfNamedRange); // Added

参考:

编辑:

当您想要检索单个命名范围时,下面的示例脚本怎么样,因为没有直接检索单个命名范围的方法?命名范围的名称在电子表格中只有一个。这个可以用。请认为这只是几个答案之一。

var ss = SpreadsheetApp.getActiveSpreadsheet();
var nameOfNamedRange = "NameOfMyNamedRange";
var nRange = ss.getNamedRanges().filter(function(e) {return e.getName() === nameOfNamedRange})[0]; // Added

推荐阅读