【问题标题】:setNamedRange() outside of the spreadsheet container?setNamedRange() 在电子表格容器之外?
【发布时间】:2016-11-27 23:51:35
【问题描述】:

我尝试了尽可能多的组合。

我的目标是让 Google Apps 脚本独立运行或从库中运行,并能够在电子表格中设置命名范围。

据我所知,setNamedRange() 方法仅在电子表格容器中可用,并且仅在您使用 SpreadsheetApp.getActiveSpreadsheet() 时可用。

我尝试使用openById() 无济于事。该方法不可用。

以为我很聪明,尝试了 openById 然后 setActiveSpreadsheet。我不够聪明。


更新,我使用 google-apps-script-issues http://code.google.com/p/google-apps-script-issues/issues/detail?id=1816 开启了问题 1816“对象变为全局,即使删除后自动完成仍然存在”

相当有趣的行为。误导我问错了问题

看起来是 GAS 编辑器中的一个错误。

【问题讨论】:

    标签: google-apps-script google-sheets


    【解决方案1】:

    以下函数演示了如何在独立脚本中设置命名范围。

    function testNamedRange() {
      var ss = SpreadsheetApp.openById('here is the spreadsheet id');
      var range = ss.getRange('Sheet1!A1:B2');
      ss.setNamedRange('TestRange', range);
      var rangeCheck = ss.getRangeByName('TestRange');
      var rangeCheckName = rangeCheck.getA1Notation();
    }
    

    rangeCheckName 变量包含 A1:B2 字符串。

    【讨论】:

    • 我所做的某件事创建了奇怪的全局变量。这就是给我的印象 setNamedRange 没有按预期工作。感谢您的代码。它工作得很好。我在 GAS 环境中所做的其他事情,我会重新开始。谢谢!吉姆
    • 除非我弄错了,但如果不使用函数来选择要从中访问它的工作表(如getSheetByName),您似乎无法执行getRange
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多