javascript - 更改查找和替换 Google 表格脚本
问题描述
我有以下脚本,但我想将其更改为仅在特定工作表(Sheet4!A:AB)上查找和替换。
我将如何去做:
function fandr() {
var ss=SpreadsheetApp.getActiveSpreadsheet();
var s=ss.getActiveSheet();
var r=s.getDataRange();
var vlst=r.getValues();
var i,j,a,find,repl;
find="abc";
repl="xyz";
for (i in vlst) {
for (j in vlst[i]) {
a=vlst[i][j];
if (a==find) vlst[i][j]=repl;
}
}
r.setValues(vlst);
}
解决方案
我认为 pnuts 的评论对您的情况很有帮助。如果您仍在寻找解决方案,那么这个答案怎么样?您想查找并替换Sheet4!A:AB
. 如果我的理解是正确的,我想提出 2 种模式。我认为您的情况有几种解决方案。因此,请将此视为其中之一。
模式 1
这个修改是一个简单的修改。它将检索值的范围修改为Sheet4!A:AB
.
var ss = SpreadsheetApp.getActiveSpreadsheet();
var r = ss.getRange("Sheet4!A:AB");
var vlst = r.getValues();
var i, j, a, find, repl;
find = "abc";
repl = "xyz";
for (var i = 0; i < vlst.length; i++) {
for (var j = 0; j < vlst[i].length; j++) {
a = vlst[i][j];
if (a == find) vlst[i][j] = repl;
}
}
r.setValues(vlst);
模式 2
在模式 1 的情况下,由 检索的值getRange("Sheet4!A:AB")
包括空行。由此,搜索速度变慢。因此,在此模式 2 中,“A1:AB”的数据范围是使用 检索的getLastRow()
。
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = ss.getSheetByName("Sheet4");
var r = s.getRange("A1:AB" + s.getLastRow());
var vlst = r.getValues();
var i, j, a, find, repl;
find = "abc";
repl = "xyz";
for (var i = 0; i < vlst.length; i++) {
for (var j = 0; j < vlst[i].length; j++) {
a = vlst[i][j];
if (a == find) vlst[i][j] = repl;
}
}
r.setValues(vlst);
参考 :
如果我误解了你想要什么,请告诉我。我想修改它。
推荐阅读
- android - LeakCanary 无法找到保留对象的路径
- python - 我如何获得两个日期之间的差异,但也有办法总结每天的小时数?
- javascript - 如何在 Chrome 调试器中询问迭代器状态
- amazon-dynamodb - 获取 aws dynamodb 表的最后一项
- reactjs - 如何将搜索栏放入标题 - react-native-elements
- sql - 从 dbplyr 中的给定 SQL 查询开始使用 dbplyr
- jenkins - Jenkins应用按钮弹出空白错误页面
- java - 在 Java 中获取 Microsoft Graph API 的令牌
- javascript - Angular App 中 2 个样式表之间的平滑过渡
- elasticsearch - elasticsearch 匹配得分关键字