我有一个循环,其目的是遍历Google表格,该表格应标识为sheet
,并视为二维数组。
for (var i = 0; i < sheet.length; i++) {
var currentDataset = sheet.getRange(i+1, 1);
var currentData = currentDataset.getCell(1, 1).getValue();
Logger.log(String(currentData));
switch (String(currentData)) {
case string:
Logger.log("match");
for (var ii = 0; ii < 16; ii++) {
currentDataset.getCell(1, ii+1).setValue(data[ii]);
}
break;
default:
Logger.log("no match");
break;
}
}
如果当前行中的第一个单元格currentData
,currentDataset
根据i
匹配switch
语句中的字符串值string
,另一个循环将迭代以使用data
的数组成功替换相应行中的相应值。如果当前单元格值不匹配,switch
将默认并中断,允许循环再次迭代。
当调用该函数时,循环开始遍历工作表,默认所有不匹配。但是,当循环到达匹配时,它会跳过它。以下是日志的样子:
[17-12-08 08:20:13:909 PST] Mismatch Value
[17-12-08 08:20:13:910 PST] default
*** THIS IS WHERE THE MATCH VALUE SHOULD APPEAR ***
[17-12-08 08:20:14:389 PST] Mismatch Value
[17-12-08 08:20:14:390 PST] default
我重写了上面的代码,使变量更具可读性,就像它最初在GAS中一样,如果你需要更详细的代码请注释,或者在这里找到它(第51-62行):https://github.com/organism/Scorecard-Builder/blob/master/src/scorecardBuilder.gs
答案 0 :(得分:0)
我认为这就是你想要做的事情:
function myfunction(){
var ss=SpreadsheetApp.getActive();
var sh=ss.getActiveSheet();//or whatever
var rg=ss.getDataRange();
var vA=rg.getValues();//gets all the data on the sheet
for(var i=0;i<vA.length;i++){
switch(typeof(vA[i][0])){
case 'string':
Logger.log('Match=%s',vA[i][0]);
for(var j=0;j<16;j++){
sh.getRange(i+1,j+1).setValue(vA[i][0])
}
break;
default:
Logger.log('No Match=%s',vA[i][0]);
break;
}
}
}
运行前的电子表格:
运行后的电子表格:
我的记录器输出:
如果那不是您拍摄的内容,那么我很抱歉在这里插话。