javascript - 如何获取范围,然后在 Google Apps 脚本中设置值

标签 javascript google-apps-script google-sheets

我正在尝试在编辑时运行一个函数,该函数将在一系列单元格中查找值“c”,然后将其替换为单词“Closed”。

这是我到目前为止所拥有的:

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]);    
  }
    }
  }

因此,当我将此值置于给定范围内时,这将成功记录“yes”和值“c”。但现在我该如何替换这个值呢?

我尝试使用 getRange() 存储数据[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 中使用“查找和替换”

基本阅读:

关于javascript - 如何获取范围,然后在 Google Apps 脚本中设置值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53538956/

相关文章:

javascript - trim 对象数组中特定对象的属性

javascript - 状态未使用 React hook 更新

javascript - 如何在 JavaScript 中生成随机单词?

javascript - 如何解决 NaN 求和 HTML 表中的一列

javascript - 使用 Appscript 仅更新空白行

google-apps-script - 如何在Google Apps脚本中使用 native 电子表格功能?

javascript - 新的 Twitter 推文获取程序仅显示 1 条推文

javascript - Google-App-Script base64 与 javascript base64 解码

javascript - 应用脚本 : creating 'dynamic' pages in web apps?

python - 如何编写 python 脚本来操作谷歌电子表格数据