【问题标题】:getFormulas() and setFormulas() convert references to #REFgetFormulas() 和 setFormulas() 将引用转换为 #REF
【发布时间】:2019-01-04 07:06:51
【问题描述】:

我的电子表格有问题,无法刷新=IMPORTRANGE 公式。我已经尝试了共享权限和电子表格设置的所有技巧,但它们对我不起作用。

我想要做的是创建一个简单的宏来擦除公式并重新输入它以刷新导入。当我运行我的宏时,我的公式变成了#REF

var ss = SpreadsheetApp.getActiveSpreadsheet();
var startingSheet = ss.getActiveSheet();

var importRange = ss.getRangeByName("MasterImport");
var importFormulas = importRange.getFormulas();
importRange.clearContent();
importRange.setFormulas(importFormulas);

我在命名范围“MasterImport”中的公式之后看起来像这样:

=IMPORTRANGE(#REF!, index(indirect(index(#REF!, match("asset_tab", #REF!, 0))),
    match(#REF!, indirect(index(#REF!, match("series_id", #REF!, 0))), 0)))

【问题讨论】:

  • 举例说明公式应该是什么,以及读入内存的值:在importRange.clearContent() 行设置断点,在脚本编辑器中手动调试-执行函数,然后查看页面底部“观察”部分中的变量。 (将这些信息编辑到您的问题中)
  • 清除内容后添加SpreadsheetApp.flush()
  • 谢谢@TheMaster!为我工作。如果其他人好奇,我会将其添加为自我回答以提高知名度

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


【解决方案1】:

@TheMaster 的建议非常有效。这是最终代码:

var importRange = ss.getRangeByName("MasterImport");
var importFormulas = importRange.getFormulas();
importRange.clearContent();
SpreadsheetApp.flush();
importRange.setFormulas(importFormulas);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-25
    • 1970-01-01
    • 2016-11-09
    • 1970-01-01
    • 2019-08-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多