Вы можете достичь этого путем чтения всех значений в таблице (в виде массива), Looping по массиву, заменяя значения, затем записывая весь массив обратно Лист.
Ниже приведен базовый пример. Вам может потребоваться изменить это, если ваш лист содержит формулы или если вы хотите заменить текст более одного раза в данной ячейке.
Обратите внимание, что любые изменения, сделанные на листе между моментом, когда вы читаете и выписываете данные, будут потеряны и потенциально могут сломать этот пример.
function testReplaceInSheet(){
var sheet = SpreadsheetApp.getActiveSheet()
replaceInSheet(sheet,'ga: sessions','Sessions');
}
function replaceInSheet(sheet, to_replace, replace_with) {
//get the current data range values as an array
var values = sheet.getDataRange().getValues();
//loop over the rows in the array
for(var row in values){
//use Array.map to execute a replace call on each of the cells in the row.
var replaced_values = values[row].map(function(original_value){
return original_value.replace(to_replace,replace_with);
});
//replace the original row values with the replaced values
values[row] = replaced_values;
}
//write the updated values to the sheet
sheet.getDataRange().setValues(values);
}
Документация:
Array.map: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map
String.Replace: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace
Sheet.getDataRange: https://developers.google.com/apps-script/reference/spreadsheet/sheet#getDataRange()
range.GetValues: https://developers.google.com/apps-script/reference/spreadsheet/range#getValues()
Это сработало! Спасибо. Я думаю, что это лучший способ, потому что мой лист содержит числовые, а не только строки. – Yuri