如何使用 Script/Macros 在特定 GSheet 列中查找和替换?
How do I Find and Replace in a specific GSheet column, using Script/Macros?
我正在 GSheets 中构建一个工具,但在使用脚本自动执行查找和替换功能时遇到了障碍。
我能够 运行 一个适用于整个 sheet 的基本 F&R 脚本(通过另一个 post 在堆栈溢出时找到),但是,我需要应用这个到特定列,而不是整个 sheet.
例如- 下面 sheet 中的当前脚本在数据集中找到任何空白单元格并将其替换为 'BLANK'。我希望这只发生在 sheet.
的 A 列中
function FandR(){
var sh = SpreadsheetApp.getActiveSpreadsheet();
var ss = sh.getSheetByName("Data Sheet");
var f = "";
var r = "BLANK";
var data = ss.getDataRange().getValues();
Logger.log(data.length);
for (var i = 0; i < data[0].length;i++){
for (var j = 0; j < data.length;j++){
if(data[j][i]==f)
ss.getRange(j+1,i+1).setValue(r);
}
}
}
在此处示例 sheet - https://docs.google.com/spreadsheets/d/190J7AzKk4GsGSwPzvSNJau1cJKhlMQUJ87Uaavw7v8I/edit?usp=sharing
见下文。该函数会将 A 列中的所有 FIND_TEXT 替换为 REPLACE_TEXT 。
如果您想要一个更通用的解决方案来替换当前选定范围内的所有单元格,请使用 const frRange= sh.getActiveRange()
function FandR(){
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sh = ss.getSheetByName("Data Sheet");
const FIND_TEXT = "";
const REPLACE_TEXT = "BLANK";
const frRange= sh.getRange("A:A")
// can replace above line with: const frRange= sh.getActiveRange()
const data = frRange.getValues()
const newData = data.map(row=>row.map(cell=>cell==FIND_TEXT?REPLACE_TEXT:cell))
frRange.setValues(newData)
}
我正在 GSheets 中构建一个工具,但在使用脚本自动执行查找和替换功能时遇到了障碍。
我能够 运行 一个适用于整个 sheet 的基本 F&R 脚本(通过另一个 post 在堆栈溢出时找到),但是,我需要应用这个到特定列,而不是整个 sheet.
例如- 下面 sheet 中的当前脚本在数据集中找到任何空白单元格并将其替换为 'BLANK'。我希望这只发生在 sheet.
的 A 列中 function FandR(){
var sh = SpreadsheetApp.getActiveSpreadsheet();
var ss = sh.getSheetByName("Data Sheet");
var f = "";
var r = "BLANK";
var data = ss.getDataRange().getValues();
Logger.log(data.length);
for (var i = 0; i < data[0].length;i++){
for (var j = 0; j < data.length;j++){
if(data[j][i]==f)
ss.getRange(j+1,i+1).setValue(r);
}
}
}
在此处示例 sheet - https://docs.google.com/spreadsheets/d/190J7AzKk4GsGSwPzvSNJau1cJKhlMQUJ87Uaavw7v8I/edit?usp=sharing
见下文。该函数会将 A 列中的所有 FIND_TEXT 替换为 REPLACE_TEXT 。
如果您想要一个更通用的解决方案来替换当前选定范围内的所有单元格,请使用 const frRange= sh.getActiveRange()
function FandR(){
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sh = ss.getSheetByName("Data Sheet");
const FIND_TEXT = "";
const REPLACE_TEXT = "BLANK";
const frRange= sh.getRange("A:A")
// can replace above line with: const frRange= sh.getActiveRange()
const data = frRange.getValues()
const newData = data.map(row=>row.map(cell=>cell==FIND_TEXT?REPLACE_TEXT:cell))
frRange.setValues(newData)
}