我在Google表格中有一个模型,每天设置一列 . 它包含实际值和预测,每天我需要推进公式以用实际值替换预测 . 我不能向前滚动整列,只有它的一部分(上面和下面的参考数字不应该改变) .
我每天都试着写一个脚本为我做这个,但我不知道如何让 getRange
引用动态范围 . 这是我的尝试:
function rollColumn() {
var ss2 = SpreadsheetApp.openById('<ID redacted>');
ss2.getRange("=index(Model!$7:$7,,match(today()-2,Model!$4:$4,0)):index(Model!$168:$168,,match(today()-2,Model!$4:$4,0))").copyTo(ss2.getRange("=index(Model!$7:$7,,match(today()-1,Model!$4:$4,0)):index(Model!$168:$168,,match(today()-1,Model!$4:$4,0))"))
};
INDEX
公式可以在它们引用相关范围的情况下工作(我已在电子表格中对它们进行了测试) . 但显然 getRange
不允许使用公式创建命名范围(这就是我在Excel中解决这个问题的方法) .
有人可以帮我用GAS重新创建这个功能吗?
这是我能够使其工作的最接近的现有问题:Google Apps Script performing Index & Match function between two separate Google Sheets
谢谢!
2 回答
您应该在代码中添加{contentsOnly:false}参数 . 这样的事情:
从列的 Headers 获取日期,然后将公式粘贴到右侧的行: