Google apps script 脚本读取数据,但不更改数据

Google apps script 脚本读取数据,但不更改数据,google-apps-script,range,overwrite,Google Apps Script,Range,Overwrite,我的代码似乎在工作,但显然我错过了一个技巧 function booleanToNumerics(){ var ss = SpreadsheetApp.openById("1--wLf-_CcfsF_7mn4SaAyqgw_G6Jvkymp7qw8DgjhOU"); var shCS = ss.getSheetByName("CS-CLEAN"); var lastRow = shCS.getLastRow(); var lastCol = sh

我的代码似乎在工作,但显然我错过了一个技巧

        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);

}

当我查看日志时,它正在读取工作表,但当我要求它写入数据时,它没有做任何明显的事情(即我想要的)。有人能告诉我答案或解释我失败原因的资源吗?

因此,您检索所有值,并希望用
“X”
值替换每个具有
“FALSE”
值的字段

使用
.getValues()
检索二维数组,例如

[[1,2,"FALSE"],["4","5","FALSE"]]
当然,这取决于表中的列数和行数

然后使用
.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/在设置值之前,您
返回
。这会导致函数在您不想终止时终止

解决所有这些问题将为您提供以下功能,这些功能应能正常工作:

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;
}