如下面的代码所示,我可以执行循环并从单元格中读取数据,但我不知道如何修改单个单元格。
function modifyDataInRange(){
var range1 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('MyData').getRange("A2:J300");
var checkData = range1.getValues();
var j = 0;
while(checkData[j][0]!=""){
if(checkData[j][1] == "Old Data"){
checkData[j][1] = "New Data"; //this does not write to the cell
range1.setValue("New Data"); //this writes to every cell in the range
}
j += 1;
}
}
有没有办法做类似 range1.setvalue([j][1], "New Data") 的事情?
[更新] 根据库珀的回复,我创建了另一个变量作为工作表,现在我有一个工作表、一个范围和数据,并且我可以运行以下命令...但不确定我是否需要范围变量。
function modifyDataInRange(){
var sheet1 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('MyData');
var range1 = sheet1.getRange("A2:J300");
var checkData = range1.getValues();
var j = 0;
while(checkData[j][0]!=""){
if(checkData[j][1] == "Old Data"){
sheet1.getRange(j+2,1).setValue("New Data")
}
j += 1;
}
}
你也可以这样做:
function modifyDataInRange() {
const ss = SpreadsheetApp.getActive();
const sh = ss.getSheetByName('Sheet0');
const rg = sh.getRange("A2:J12");
const vs = rg.getValues();
let o = vs.map(([a,b,c,d,e,f,g,h,i,j]) => (b == "Old Data") ? [a,"New Data",c,d,e,f,g,h,i,j] : [a,b,c,d,e,f,g,h,i,j]);
rg.setValues(o);
}