如何在表格中编写查找和替换脚本
How to write a find and replace script in Sheets
我正在尝试编写一个脚本,该脚本采用文本版本的以“@”开头的公式并将其替换为“=”,以便公式真正起作用。我曾尝试使用替换和替代公式,但在 运行 这些公式之后,原始公式不会拉动。
这是电子表格的 link:
这是我当前的脚本:
var sheet = spreadsheet.getActiveSheet();
sheet.getRange(1, 1, sheet.getMaxRows(), sheet.getMaxColumns()).activate();
spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true});
spreadsheet.getRange('A1').activate();
spreadsheet.getRange('Formulas!A16:M17').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('A2').activate();
currentCell = spreadsheet.getCurrentCell();
spreadsheet.getSelection().getNextDataRange(SpreadsheetApp.Direction.NEXT).activate();
currentCell.activateAsCurrentCell();
//This is where the find replace formula needs to go
currentCell.toString().replace("@", "=");
这样试试:
function copyFormulas() {
var ss=SpreadsheetApp.getActive();
var ssh=ss.getSheetByName('Formulas');
var srg=ssh.getRange('A16:M17');
var vA=srg.getValues();
for(var i=0;i<vA[1].length;i++) {
vA[1][i]=vA[1][i].toString().replace('@','=');
}
var dsh=ss.getSheetByName('Script');
dsh.getRange(1,1,1,srg.getWidth()).setValues([vA[0]]);
dsh.getRange(2,1,1,srg.getWidth()).setFormulas([vA[1]]);
}
我正在尝试编写一个脚本,该脚本采用文本版本的以“@”开头的公式并将其替换为“=”,以便公式真正起作用。我曾尝试使用替换和替代公式,但在 运行 这些公式之后,原始公式不会拉动。
这是电子表格的 link:
这是我当前的脚本:
var sheet = spreadsheet.getActiveSheet();
sheet.getRange(1, 1, sheet.getMaxRows(), sheet.getMaxColumns()).activate();
spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true});
spreadsheet.getRange('A1').activate();
spreadsheet.getRange('Formulas!A16:M17').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('A2').activate();
currentCell = spreadsheet.getCurrentCell();
spreadsheet.getSelection().getNextDataRange(SpreadsheetApp.Direction.NEXT).activate();
currentCell.activateAsCurrentCell();
//This is where the find replace formula needs to go
currentCell.toString().replace("@", "=");
这样试试:
function copyFormulas() {
var ss=SpreadsheetApp.getActive();
var ssh=ss.getSheetByName('Formulas');
var srg=ssh.getRange('A16:M17');
var vA=srg.getValues();
for(var i=0;i<vA[1].length;i++) {
vA[1][i]=vA[1][i].toString().replace('@','=');
}
var dsh=ss.getSheetByName('Script');
dsh.getRange(1,1,1,srg.getWidth()).setValues([vA[0]]);
dsh.getRange(2,1,1,srg.getWidth()).setFormulas([vA[1]]);
}