首页 > 解决方案 > Google App Script - 如果另一列中的条件匹配,则将数字条目设为 0

问题描述

我正在尝试自动化执行以下操作的操作..

如果该数值旁边的列中的条目满足,则使数值为零。

https://docs.google.com/spreadsheets/d/1Ipo716-K17BUn6RzS2AQqSaC41eSqAEKux-nckeir9Q/edit?usp=sharing

以上是我所指的示例数据的链接

基本上,如果 A 列“事件”包含“不计算”,我想将这些转换为“0”

所以正确的总转化次数将是 80

有没有办法通过 Google App Script 有效地做到这一点?

以下是我尝试过的

function testing(){
  var sh = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1')
  var data = sh.getDataRange().getValues()

  for (n=0; n<data.length;++n){
    if(data[n][0].toString().match('Retargeting - do not count') == 0){
      data[n][2] = 0
    }
    else if(data[n][0].toString().match('Step 3 pool size - do not count') == 0){
      data[n][2] = 0
    }
    else if(data[n][0].toString().match('Step 2 Retargeting - do not count') == 0){
      data[n][2] = 0
    }
  }

  Logger.log(data)

  sh.getRange(1,1,data.length,data[2].length).setValues(data);
}

标签: google-apps-script

解决方案


如果您只需要检查contains "do not count",那么您不需要为每种类型的文本单独设置条件。

另一个变化是,如果没有匹配,结果是null, not 0

因此,在 for 循环中,您可以尝试:

if(data[n][0].toString().match('do not count') != null){
  data[n][2] = 0;
}

推荐阅读