Javascript 如何用Google Apps脚本替换电子表格中的文本?
我想在电子表格中找到一个指定的文本,并用其他单词替换它。我试过了Javascript 如何用Google Apps脚本替换电子表格中的文本?,javascript,google-apps-script,google-sheets,Javascript,Google Apps Script,Google Sheets,我想在电子表格中找到一个指定的文本,并用其他单词替换它。我试过了 sheet = SpreadsheetApp.getActiveSheet() sheet.replaceText ('ga: sessions','Sessions'); 然后它说“在对象表中找不到函数replaceText。”getActiveSheet()函数返回一个对象,其函数记录在链接中。如果有这样一个API,那就太棒了,但目前您需要删除和插入(行、列或特定范围的内容),以便能够进行这种替换。尝试以下操作: var s
sheet = SpreadsheetApp.getActiveSheet()
sheet.replaceText ('ga: sessions','Sessions');
然后它说
“在对象表中找不到函数replaceText。”
getActiveSheet()函数返回一个对象,其函数记录在链接中。如果有这样一个API,那就太棒了,但目前您需要删除和插入(行、列或特定范围的内容),以便能够进行这种替换。尝试以下操作:
var sheet = SpreadsheetApp.getActiveSheet();
var cell = sheet.getRange("A1:A1");
cell.setValue('ga: sessions','Sessions');
可以通过读取工作表中的所有值(作为数组),在数组上循环,替换值,然后将整个数组写回工作表来实现这一点 下面是一个基本示例。如果工作表中包含公式,或者要在给定单元格中多次替换文本,则可能需要修改此选项 请注意,在读入和写出数据之间对工作表所做的任何更改都将丢失,并且可能会破坏此示例
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:
String.replace:
Sheet.getDataRange:
range.GetValues:来自Cameron Roberts answer,它几乎适用于所有情况(如果所有单元格都只填充了字符串),并且只是为了方便键入(请接受他的答案)。这里是相同的脚本,映射函数中有一个小改动:我在返回参数中添加了toString()
function testReplaceInSheet(){
var sheet = SpreadsheetApp.getActiveSheet()
replaceInSheet(sheet,'values','test');
}
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.toString().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);
}
这对我来说很有效,很简单
函数changevalues(){
var sheet=SpreadsheetApp.getActiveSpreadsheet().getSheetByName('NameOfSheet');
var rangecells=sheet.getRange('DesiredRange');
rangecells.setValue('DesiredValue')
}
所选答案不适用于包含日期单元格的数据。
实际上,它将这些单元格更改为字符串,这不是预期的行为
我修改了代码以检查值是否为number,并仅更改字符串值
function testReplaceInSheet(){
var sheet = SpreadsheetApp.getActiveSheet()
replaceInSheet(sheet,'values','test');
}
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){
if (typeof original_value != 'string') {
return original_value;
} else {
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);
}
祝你有一个美好的一天TextFinder于2019年4月发布:
function textFinder() {
const sheet = SpreadsheetApp.getActiveSheet();
const range = sheet.getDataRange();
// Creates a text finder for the range.
const textFinder = range.createTextFinder('findValue');
const allOccurrences = textFinder.replaceAllWith('replaceValue');
}
几乎完美。。。我想您在使用替换方法之前忘记了转换为字符串。。。我会发布一个工作版本,我也很感激你!成功了!非常感谢。我认为这是最好的方法,因为我的工作表包含数字,而不仅仅是字符串。