我正在编写一个简单的脚本,该脚本基本上读取一个值,并在单击按钮时将其发送到另一张表。为了测试目的,我写道:
SpreadsheetApp.flush()
var sheet = localSheet.getSheetByName('Input');
var dateTimeRange = sheet.getRange(2,2);
var dateTimeValue = dateTimeRange.getDisplayValue();
localSheet.toast(readingValue, dataTypeValue)
在电子表格设置中,我设置了: 文件->电子表格设置->计算->每分钟更改一次
2,2范围内的单元格具有
=now()
因此,每隔2分钟,单元格2,2中的值就会重新计算一次。 但是,当我运行脚本时,看到的输出值始终是我上次修改工作表的值。只要我不与工作表交互,脚本就无法读取新值。我尝试添加flush(),不起作用。有人知道吗
谢谢。
答案 0 :(得分:0)
我认为您遇到问题的原因是未更新工作表。不幸的是,不能使用flush()
。为了避免此问题,以下解决方法如何?请认为这只是几个答案之一。
根据您的情况,在编辑工作表时,将更新getDisplayValue()
检索的值。在此答案中,将使用它。
在此替代方法中,单元格“ B2”被=NOW()
覆盖。
var localSheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = localSheet.getSheetByName('Input');
var dateTimeRange = sheet.getRange(2, 2);
var dateTimeValue = dateTimeRange.setFormula("=NOW()").getDisplayValue(); // Modified
localSheet.toast(dateTimeValue);
在此替代方法中,将清除一个空单元格。在示例脚本中,单元格“ B3”假定为空,并且该单元格与主数据无关。该单元格已清除。这样,让Spreadsheet知道工作表已被编辑。
var localSheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = localSheet.getSheetByName('Input');
var dateTimeRange = sheet.getRange(2, 2);
sheet.getRange("B3").clear(); // Added
var dateTimeValue = dateTimeRange.getDisplayValue();
localSheet.toast(dateTimeValue);
localSheet.getSheetByName("Sheet1").getRange("A1").clear()
代替sheet.getRange("B3").clear()
。localSheet
var localSheet = SpreadsheetApp.getActiveSpreadsheet()
吗?readingValue
和dataTypeValue
。在此答案中,使用dateTimeValue
。如果这对您的情况没有帮助,我深表歉意。