Google Sheet脚本getValues,当找到给定值时,替换上一行的值

时间:2018-03-18 06:07:11

标签: google-apps-script google-sheets

如何修改下面的脚本来读取列中的值,但只读取指定单元格的值:L9,L10 ... L18,L19 .... L27,L28 ......(两个通过两个跳八,到列L2000的末尾)并且当找到值" 1"在其中一个单元格中,然后用" FALSE"?

替换4行的值。

e.g。如果找到单元格L19的数字1,则用单词" FALSE"替换单元格L15的值。 ...如果找到单元格L28的数字1,则将单词L24的值替换为单词" FALSE"

var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("ABC"); 
var lastrow = ss.getLastRow(); 
var range = ss.getRange(9, 12, lastrow - 1, 1); 
var data = range.getValues(); 
for (var i=0; i < data.length; i++) { 
  if (data[i][0] == "1") { 
    data[i][0] = "FALSE"; 
  } 
} 
range.setValues(data); 

2 个答案:

答案 0 :(得分:0)

添加另一个循环计数器:尝试修改

自:

var range = ss.getRange(9, 12, lastrow - 1, 1); 
var data = range.getValues(); 
   for (var i=0; i < data.length; i++) { 
     if (data[i][0] == "1") { 
      data[i][0] = "FALSE"; 
    } 
   } 

要:

var range = ss.getRange(5, 12, lastrow+5, 1); 
var data = range.getValues(); 
var m= 0;
for (var i=4; i < data.length; ) { 
  if (data[i][0] == "1") {
    data[i-4][0] = "FALSE";
  }
  m++;
  if (m == 2) {
    m=0; 
    i = i + 8;
  } else {
    i++;
  }
}

答案 1 :(得分:0)

我对循环应该成为什么:

var range = ss.getRange(9, 12, lastrow - 1, 1);
var data = range.getValues();
var i = 4,
    // Subtract 1 here because we compare both i and i+1 in the same loop body
    len = data.length - 1;
while (i < len) {
  // Check the value of the first row in the subset.
  if (data[i][0] == 1) {
    data[i - 4][0] = "FALSE";
  }
  // Check the next row in the subset.
  if (data[++i][0] == 1) {
    data[i - 4][0] = "FALSE";
  }
  // Advance to the next subset.
  i += 8;
}