首页 > 解决方案 > 如何使用 IF 条件更改 for 循环中的列值

问题描述

我是 Google Apps 脚本的新手。我有一个数组,如果第 5 列(推荐)== ABC 中的值,我需要将第 7 列(gci)中的值更改为第 6 列(referalcomm)中的值。这是脚本:

function netincome() {
  var report = SpreadsheetApp.getActiveSpreadsheet();
  var data = report.getSheetByName("Test");
  var dataRange = data.getDataRange();
  var lastrow = dataRange.getLastRow();
  
  var gci = data.getRange(1, 7, lastrow, 1).getValues ();
  var referral = data.getRange(1, 5, lastrow, 1).getValues();
  var referralcomm = data.getRange(1, 6, lastrow, 1).getValues();
  for (var i = 0; i<=lastrow; i ++) {
     if (referral == "ABC") { 
       gci.setValue(referralcomm);
     }
  }
}

但是,当 Col 5 == ABC 时,脚本不会将 Col 7 的值更改为 Col 6 中的值。感谢所有的帮助。

标签: javascriptgoogle-apps-scriptgoogle-sheets

解决方案


尝试这个:

function netincome() {
  var report = SpreadsheetApp.getActive();
  var data = report.getSheetByName("Test");
  var dataRange = data.getDataRange();
  var lastrow = dataRange.getLastRow();
  
  var gci = data.getRange(1, 7, lastrow, 1).getValues ();
  var referral = data.getRange(1, 5, lastrow, 1).getValues();
  var referralcomm = data.getRange(1, 6, lastrow, 1).getValues();
  for (var i=0;i<lastrow;i++) {
     if (referral[i][0] == "ABC") { 
       gci[i][0]=referralcomm[i][0]);
     }
  }
  data.getRange(1, 7, lastrow, 1).setValues(gci);
}

我认为这是同一件事

function netincome() {
  var ss=SpreadsheetApp.getActive();
  var sh==ss.getSheetByName('Test');
  var vs=sh.getDataRange().getValues();
  var or=sh.getRange(1,7,sh.getLastRow(),1);
  var ov=oR.getValues();
  vs.forEach(function(r,i){
    if(r[4]=="ABC") {
      oA[i][0]=r[5];
    }
  });
  or.setValues(ov);
}

推荐阅读