Google apps script 为什么两个用户有时会从importrange中看到不同的值?

Google apps script 为什么两个用户有时会从importrange中看到不同的值?,google-apps-script,google-sheets,google-sheets-formula,importrange,Google Apps Script,Google Sheets,Google Sheets Formula,Importrange,我有一个非常奇怪的问题,描述可能有点混乱 我有两个电子表格A和B。A中的一个表格是从B导入带有importrange的数据。问题是,有时两个用户在该表格中看到不同的值 详细信息: 我在A中有两个脚本: 将导入范围中的值复制到另一张图纸的工具 调用Web应用程序更改B中数据的人 当两个用户打开A,其中一个通过脚本对B进行更改,然后使用另一个脚本复制值时,一切正常。但是,如果一个用户关闭A,另一个用户使用脚本在B中进行更改,当第一个用户重新打开电子表格时,他将看到新值,但是如果他使用值复制脚本,

我有一个非常奇怪的问题,描述可能有点混乱

我有两个电子表格A和B。A中的一个表格是从B导入带有importrange的数据。问题是,有时两个用户在该表格中看到不同的值

详细信息:
我在A中有两个脚本:

  • 将导入范围中的值复制到另一张图纸的工具
  • 调用Web应用程序更改B中数据的人
当两个用户打开A,其中一个通过脚本对B进行更改,然后使用另一个脚本复制值时,一切正常。但是,如果一个用户关闭A,另一个用户使用脚本在B中进行更改,当第一个用户重新打开电子表格时,他将看到新值,但是如果他使用值复制脚本,则包含来自importrange的值的范围将显示旧值。奇怪的是,从该范围复制值的脚本将复制新的正确值,即使我们看不到它们

当我手动对电子表格B进行一些更改时,问题就消失了。我不知道,这就像当我通过脚本或其他方式进行更改时,电子表格B不会刷新一样


你有什么想法,这是什么原因,也许如何解决它。我认为我可以解决这个问题,但我不会。

两个Google Sheets用户可能会在同一个spreasheet上看到不同的值,因为公式计算(包括那些进行API调用(如IMPORTRANGE))是由用户操作触发的,如打开或编辑电子表格

某些函数也可能通过脚本所做的更改重新计算,因此脚本实际上可能“看到”与用户看到的值不同的值

如果用户需要看到相同的值,应考虑定期“冻结”它们,即制作电子表格的副本,然后根据它们的结果替换公式。


另一种选择是共享屏幕,而不是依赖Google Sheets的“实时”协作功能。

尝试添加
SpreadsheetApp.flush()
。可能行,也可能不行。我以前试过。现在我已经在多个地方添加了十几次这一行,只是为了确定,但是当一个工作表打开时,importrange重新计算时仍然可以使用相同的方法。但如果加载了图纸,则会发生更改,并在打开时重新计算。这可能导致两个不同的用户看到不同的数据。这很有趣。当我在a始终打开的情况下使用脚本对电子表格B进行更改时,几秒钟后我可以看到导入范围内的更改。谢谢您的回答。也许我高估了这个“实时”功能。我想我必须放弃这个想法,用一些刷新按钮或类似的东西来做任何事情。@Maciek别忘了说谢谢的方法就是投票给答案。裁判。