【问题标题】:How to check for cell value?如何检查单元格值?
【发布时间】:2021-11-14 08:04:54
【问题描述】:

我有一个非常简单的脚本,在编辑工作表时运行(如下)。我的单元格 c6 上有数据验证,只允许是或取消,一旦选择,就会导致脚本运行。我希望宏检查是否已选择值是,如果是,则运行模块 CopyDownNews。我的问题是 CopyDownNews 每次都会运行,而与 C6 中选择的内容无关。有什么想法吗?

function changeMade() {

var checkForNews = spreadsheetApp.getActiveSpreadsheet().getSheetByName("Tracking").getRange("c6");

if (checkForNews='Yes') {
  
  CopyDownNews();

  SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Tracking").getRange("c6").clearContent();
  
};  

}

【问题讨论】:

    标签: google-apps-script google-sheets


    【解决方案1】:

    你必须检查 getValue()

    var checkForNews = spreadsheetApp.getActiveSpreadsheet().getSheetByName("Tracking").getRange("c6").getValue();
    

    【讨论】:

    • 感谢 Mike,已更新,但仍然出现同样的错误。我添加了一行额外的代码来将变量 checkForNews 复制到工作表上,并且每次,该值始终是 Yes 这解释了为什么代码运行但是当我测试代码时给出奇怪的,单元格是空白或包含另一个值.是否可以从数据验证中获取默认值?
    • 想通了。添加了一个双等号: if (checkForNews=='Yes') 并且它有效。不知道为什么,但我会接受的!我确定我之前尝试过,但由于您的提示,所以现在可能只有效。再次感谢!
    • 在应用程序脚本中,单个等号设置一个值,而一个双等号检查一个值。 (也有一个三等号,但它与您正在做的事情无关。)
    【解决方案2】:

    出于文档目的发布此内容:

    问题:

    1. 作为MikeSteelson said,您必须检索范围的值,而不是范围本身。使用Range.getValue()
    2. 它总是进入if 块,因为您添加了assignment operator (=),而您应该使用comparison operator (==, ===)。

    代码sn-p:

    function changeMade() {
      var range = spreadsheetApp.getActiveSpreadsheet().getSheetByName("Tracking").getRange("c6");
      var checkForNews = range.getValue();
      if (checkForNews==='Yes') {
        CopyDownNews();
        range.clearContent();
      };  
    }
    

    【讨论】:

      猜你喜欢
      • 2018-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多