google-apps-script - 循环问题的 Google 脚本
问题描述
所以这个问题似乎在黑板上被打死了,但是通过我所有的阅读和谷歌搜索,我无法弄清楚我做错了什么。
我正在尝试调整此链接中的代码 如何循环谷歌电子表格列值并在 B 列中设置结果?
下面是我已经适应的
function EquationIterationTest(){
var s = SpreadsheetApp.getActiveSpreadsheet();
var sht = s.getSheetByName('Heath, OH')
var drng = sht.getDataRange();
var rng = sht.getRange(13, 2, 111, 1)
//.getRange(13, 2, drng.getLastRow()-1, drng.getLastColumn())
var rngA = rng.getValues();//Array of input values
Logger.log(rngA);
for(var i = 0; i < rngA.length; i++) {
if(rngA[i][0] === 'subtotal'){
rng.offset(0,3).setFormula('=iferror(sum(filter(Invoices!$E:$E,Invoices!$F:$F=$B14,Invoices!$A:$A=$C$2)))');
}
else{
rng.offset(0,3).setValue('Dumb');
}
}
}
当我运行它时,rngA 确实获得了第一列值(在本例中从 B13 开始),但是它不会在第三列值中输入公式。相反,它直接通过第一个 if 语句并执行 else 语句。我唯一能想到的是我的 if 语句或数组有问题。
我尝试设置if(rngA[i][0] === 'subtotal')
为if(rngA[i][1] === 'subtotal')
,但仍然在每一行返回“哑”。
任何帮助将不胜感激,这样我就可以停止“愚蠢”!
这是我的工作表的链接。
https://docs.google.com/spreadsheets/d/1cDkwWThXDTssH89gJX7W1zKzsW86oLXO-FPfAIJvc-g/edit?usp=sharing
谢谢
解决方案
问题不在于您的 if 条件,尽管如果您使用三个等号,您正在进行严格的比较,因此您的小计应该以大写字母开头。
也就是说,当您将值或公式分配给 时,您的问题就会发生rng.offset(0,3)
,因为该表达式的结果是一个范围,其大小与rng
右侧偏移 3 列相同。您可以使用: 来验证这一点Logger.log(rng.offset(0,3).getA1Notation());
,因此每当您在那里分配一个值或公式时,您就是将它分配给整个偏移量 rng。不是你想要的对吗?
在您的情况下,您应该使用offset()
单个单元格,而不是整个范围。
您的功能可以简化为以下内容:
function EquationIterationTest(){
var s = SpreadsheetApp.getActiveSpreadsheet();
var sht = s.getSheetByName('Heath, OH')
var rng = sht.getRange(13, 2, 111, 1)
for(var i = 1; i <= rng.getNumRows(); i++) {
var cell = rng.getCell(i,1);
if(cell.getValue() === 'Subtotal'){
cell.offset(0,3).setFormula(
'=iferror(sum(filter(Invoices!$E:$E,Invoices!$F:$F=$B14,Invoices!$A:$A=$C$2)))'
);
}
else{
cell.offset(0,3).setValue('Dummy');
}
}
}
推荐阅读
- audio - FFmpeg 检查音频通道是否静音
- java - 视图动画队列
- google-sheets - Gsheet 将部分时间添加到开始时间以计算结束时间
- php - 更新复选框 Codeigniter
- debugging - 如何在 Common LISP 上使用 Emacs 内置调试器查看局部变量?
- rust - 错误:在实例化 `func::<[closure]>` 时达到递归限制
- jquery - 无需重新加载的 Ajax ResponseText
- javascript - 如果 Blob URL 是不可变的,Media Source Extension API 如何使用它们来流式传输视频?
- javascript - 如何检查对象中是否存在相同的字符串?
- node.js - 如何计算 mongodb 集合中特定字段的实例