我正在使用此脚本,但是它将替换T,A等的每个实例。如何获取它以仅替换完全匹配项?只要是字母T,别无其他。
function runReplaceInSheet(){
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Underlevel");
// get the current data range values as an array
// Fewer calls to access the sheet -> lower overhead
var values = sheet.getDataRange().getValues();
// Replace
replaceInSheet(values, "/^T$/", '=image("https://i.imgur.com/Dxl893F.png")');
replaceInSheet(values, 'A', '=image("https://i.imgur.com/omc7F9l.png")');
replaceInSheet(values, 'R', '=image("https://i.imgur.com/12ZmSp3.png")');
replaceInSheet(values, 'M', '=image("https://i.imgur.com/kh7RqBD.png")');
replaceInSheet(values, 'H', '=image("https://i.imgur.com/u0O7fsS.png")');
replaceInSheet(values, 'F', '=image("https://i.imgur.com/Hbs3TuP.png")');
// Write all updated values to the sheet, at once
sheet.getDataRange().setValues(values);
}
function replaceInSheet(values, to_replace, replace_with) {
//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;
}
}
谢谢:D
String#replace()
并期望执行正则表达式类型。"/^T$/"
将被解释为一个字符串字面启动与/
,包含^
,T
以及$
和结束与/
。"
。/^T$/ //or new RegExp('^T$')
您也可以直接使用.replace()
替换功能。
var range = sheet.getDataRange();
var replaceObj = {
//to_replace: imgur id
T: 'Dxl893F',
A: 'omc7F9l',
};
var regex = new RegExp('^(' + Object.keys(replaceObj).join('|') + ')$', 'g');// /^(T|A)$/
function replacer(match) {
return '=image("https://i.imgur.com/' + replaceObj[match] + '.png")';
}
range.setValues(
range.getValues().map(function(row) {
return row.map(function(original_value) {
return original_value.toString().replace(regex, replacer);
});
})
);
谢谢:D两种解决方案都有效,但是我现在遇到的问题是,当输入多个字符串时,它将删除前一个字符串。因此,例如,我输入T和R,它将找到并替换T,然后将其删除并替换R。这是Google表格还是代码?
@Ryan
T
和R
在一个单元中?喜欢TR
并输出R
?不,对不起,不同的牢房。它将替换T,删除它,然后用R替换另一个单元格。我一直在玩弄它,将随机的T,A,R遍历整个表并按组放置。一次输入多个。所有以前替换的字符串都会消失,并在替换新字符串时重新出现。但是,它们不会再出现。即使在创建新单元格之间等待,它仍会删除以前的单元格。希望这是有道理的!@大师
我想我应该注意,目的是要在同一张纸上多次使用此脚本。不确定是否更改任何内容。不过,可能值得一提的是,我在“查找和替换”中看到的某些脚本似乎一经使用就可以使用。@大师
=image()
删除先前替换的公式,因为当您使用getValue()时,该值在具有图像公式的单元格中为空。您的值数组应该是公式和值的混合,有关如何执行此操作的信息,请参见此处。如果您有问题,请提出一个足够详细的新问题。