【问题标题】:Google Sheets Script TextFinder FormulaText Doesn't Work with Named Ranges?Google Sheets Script TextFinder FormulaText 不适用于命名范围?
【发布时间】:2021-03-01 13:20:43
【问题描述】:

我正在尝试创建一个函数来修改随时间变化的范围内的公式。

作品

var range=ss.getSheetByName('cleaned').getRange("A499:AH540");
sumForm=range.createTextFinder("ss2").matchFormulaText(true);
sumForm.replaceAllWith('ss');

不工作

var range=ss.getRangeByName('cleanedSums');
sumForm=range.createTextFinder("ss2").matchFormulaText(true);
sumForm.replaceAllWith('ss');

是的,我意识到静态定义范围与命名范围定义略有不同,但相关公式出现在 E、M、V 和 AD 列中。

我创建了一个可公开编辑的工作表版本:https://docs.google.com/spreadsheets/d/1v_rYBDz6NWmv5JFghsNl2ScAP3u0fq2QHEmZM5ArvG4/edit

有问题的函数是 ss1(),可从 UI 菜单 Hide (Create SS1) 访问。任何见解将不胜感激。

我不确定如何在不使用数据下限的愚蠢辅助单元格的情况下实现此功能,这最终会变得不准确或每次遍历行以找到下限。两者都不是特别吸引人,我正在努力思考为什么 TextFinder 替换功能不适用于命名范围。抱歉,如果这属于 /webapps

【问题讨论】:

  • 它适用于我....如果您尝试function myFunctionTest() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var range=ss.getRangeByName('cleanedSums'); sumForm=range.createTextFinder("ss2").matchFormulaText(true); sumForm.replaceAllWith('ss'); } 并在不同的脚本中运行它,您会发现它运行良好。
  • 这可能与您的其余代码有关。您定义全局变量,并且您有许多菜单以及一个 html 文件。检查其余代码是否正确。
  • @Marios 谢谢,但我不确定其他代码如何相关。所有其他功能正常触发。我在函数中重新实例化了 ss 变量,但它仍然没有修改公式。你在哪里测试了这段代码?它说没有人编辑我共享的工作表
  • 我创建了工作表的副本。我不想碰原始文件。您是否在单独的脚本中测试了我的代码以查看它是否有效?这将验证代码是否正常工作,因此您可以验证问题与此代码不同。
  • @Marios 你是对的。它在一个单独的脚本中工作。仍然不明白为什么,但是如果您发布答案,我会为您接受。谢谢!编辑:嗯,它工作过一次。但现在它说它找不到辅助脚本中声明的函数。有什么建议吗?

标签: google-apps-script google-sheets named-ranges


【解决方案1】:

您的代码作为一个单独的函数工作。

很可能您的全局变量干扰了脚本。

function myFunctionTest() {   
  var ss = SpreadsheetApp.getActiveSpreadsheet();   
  var range=ss.getRangeByName('cleanedSums');   
  sumForm=range.createTextFinder("ss2").matchFormulaText(true);   
  sumForm.replaceAllWith('ss'); 
} 

【讨论】:

    猜你喜欢
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    • 2021-04-19
    • 1970-01-01
    • 2021-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多