我的代码似乎起作用了,但显然我错过了一个窍门。
function booleanToNumerics(){
var ss = SpreadsheetApp.openById("1--wLf-_CcfsF_7mn4SaAyqgw_G6Jvkymp7qw8DgjhOU");
var shCS = ss.getSheetByName("CS-CLEAN");
var lastRow = shCS.getLastRow();
var lastCol = shCS.getLastColumn();
var shData = shCS.getRange(2,3,lastRow,lastCol).getValues();
var changeData = shData.toString().replace("FALSE", "X");
Logger.log(changeData)
return changeData;
shCS.getRange(2,3,lastRow,lastCol).setValues(changeData);
}当我查看日志时,它正在读取工作表,但当我要求它编写数据时,它并没有做任何明显的事情(即我想要的)。有人能给我指出答案或资源来解释我为什么失败吗?
发布于 2016-02-10 10:15:56
因此,您检索所有值,并希望将每个具有"FALSE"值的字段替换为"X"值。
使用.getValues()可以检索一个二维数组,如
[[1,2,"FALSE"],["4","5","FALSE"]]当然,这取决于表中的cols和行数。
然后,使用.toString()将其转换为字符串,它将变为
"1,2,FALSE,4,5,FALSE"然后,使用.replace()方法,您可以获得以下内容
"1,2,X,4,5,FALSE"这里发生了三件事
1/一旦调用toString,数组的每个属性都会丢失。
要解决这个问题,需要实际调用数组上的JSON.stringify
2/您并不是要替换所有的出现的FALSE,只是第一个
要解决这个问题,您需要使用一些正则表达式,比如这个str = str.replace(/abc/g, '');
之后,您需要将字符串转换为一个有效的数组,使用JSON.parse方法实现。
3/ You return 在设置值之前。这将导致函数在不想终止时终止。
解决所有这些问题都会给您带来这样的结果,这些问题应该能正常工作:
function booleanToNumerics(){
var ss = SpreadsheetApp.openById("1xRKM7BlAgwYWuLdCqMOd5qwmiy4i1d8bXxZWU7rJfE4");
var shCS = ss.getSheetByName("CS-CLEAN");
var lastRow = shCS.getLastRow();
var lastCol = shCS.getLastColumn();
var shData = shCS.getRange(2,3,lastRow,lastCol).getValues();
var regexToUse = /false/g, valToReplaceWith = new String("X");
var changeData = JSON.stringify(shData).replace(regexToUse, '"'+valToReplaceWith+'"');
Logger.log(changeData)
shCS.getRange(2,3,lastRow,lastCol).setValues(JSON.parse(changeData));
return changeData;
}https://stackoverflow.com/questions/35311417
复制相似问题