javascript - 如何在 Google Apps 脚本中获取范围然后设置值
问题描述
我正在尝试在编辑时运行一个函数,该函数将在一系列单元格中查找值“c”,然后将其替换为“已关闭”一词。
这是我到目前为止所拥有的:
function onEdit(e) {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var data = sheet.getRange('CA12:CA15').getValues();
var closed = 'c'
for(var i=0; i<data.length;i++) {
if(data[i] == closed) {
Logger.log('yes')
Logger.log(data[i]);
}
}
}
所以当我在给定范围内有这个值时,这成功地记录了“是”和值“c”。但是我现在如何替换这个值?
我尝试使用 getRange() 存储 data[i] 的范围,但它不允许我这样做。如果我能得到这个范围,那么我知道我可以使用 range.setValue('Closed') 但现在有点卡住了。我知道我正在做一些非常简单非常错误的事情,但任何帮助都会很棒。
解决方案
关键点:
getValues
返回按行和列排序的二维数组。您正在访问一维数组data[i]
i
数组+起始行的索引等于循环中的当前行。
代码片段(慢):
if(data[i][0] == closed) { //2D
sheet.getRange('CA'+(12+i)).setValue('Closed');
}
- 但是上面的内容很慢,因为我们为每个真实条件调用 setValue() 。更好的方法是使用数组。
代码片段(快速 70 倍):
var rng =sheet.getRange('CA12:CA15');
var data = rng.getValues();
var output = data.map(function(e) { return e[0] == closed ? ['Closed'] : e });
rng.setValues(output); //Single call
- 最快的方法是从工作表 UI 或 API 使用查找和替换
必读:
推荐阅读
- c - 如何在可变参数函数中抛出类型错误,如 printf throws 中的错误
- php - 在 WooCommerce 中将购物车总数量限制为特定倍数
- python - OpenCV VideoCapture 和 (-215:Assertion failed) !_src.empty() in function 'cvtColor'
- javascript - Firebase web:将文件从一个位置复制到同一存储桶中的另一个位置
- javascript - 当我尝试自定义搜索框组件时,algolia 出现问题
- javascript - 使用 xhr 加载脚本并运行它
- php - 更新 vBulletin 产品的旧付款脚本
- android - 如何获取 Android 应用的通知徽章?
- c++ - 使用C++ for循环在内存中创建链表类的不同节点以及如何返回其头部?
- java - 如何使用反应式方法在多次操作后保存获得的值