【发布时间】:2020-05-24 15:11:39
【问题描述】:
我遇到了一个奇怪的问题。当我在 Google 表格单元格中键入文本,然后运行自定义脚本(如下)以获取这些值时,它不会获取我刚刚输入的值。只有当我离开该单元格时,这些值才可用(@987654322 @ 或 enter)。
var data = dataRange.getValues();
我不确定这些值何时真正写入单元格。如果我编写远离该单元格的脚本(如下),我会遇到同样的问题。
var newRange = sheet.getRange("C4");
sheet.setCurrentCell(newRange);
有没有办法将所有数据写入工作表?
可以使用此代码进行测试。向 A1 写入一些文本,运行自定义脚本并检查日志。如果您在运行脚本之前没有离开 A1,则日志将为空。
function moveTest(){
var sheet = SpreadsheetApp.getActiveSheet();
var newRange = sheet.getRange("A2");
sheet.setCurrentCell(newRange);
var cellOfInterest = sheet.getRange("A1").getValue();
Logger.log(cellOfInterest);
}
编辑:setActiveSelection 与 setCurrentCell 相同的问题
【问题讨论】:
-
根据我的经验,它们会在单元格失去焦点时立即写入。因此,当我运行函数
function runOne(){ SpreadsheetApp.getActive().toast(SpreadsheetApp.getCurrentCell().getValue()); }时,我会立即看到 toast 中的值,因为当我运行函数时单元格失去了焦点。 -
我最终只是删除了工作表上的“按钮”并将脚本调用放在自定义菜单中。这是一个关于解决问题的方法。我仍然认为谷歌应该实现一种脚本强制将数据写入工作表的方法。我尝试了很多解决方案,但大多数都有非常明显的极端情况,这并不理想。
标签: google-apps-script google-sheets