google-apps-script - 如何根据 Google Apps 脚本中的工作表数量调整流程?
问题描述
我正在 GAS 中创建一个表单,我使用该方法将其响应放入容器电子表格中setDestination()
。默认情况下,它被放置在第一张纸上,但我希望它成为最后一张纸,并且我还想重命名它。为了实现这一点,我在之后执行这些操作setDestination()
:
var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();
sheets[0].setName('new name');
SpreadsheetApp.getActiveSpreadsheet().setActiveSheet(sheets[0]);
SpreadsheetApp.getActiveSpreadsheet().moveActiveSheet(sheets.length);
但是有一个问题getSheets()
:它似乎没有及时检测到新工作表的到来 - 因此使得它后面的所有内容都是错误的。
我尝试在使用回调setDestination()
调用之前确保已完成执行getSheets()
,但这并没有帮助。我也试过放一个
while(SpreadsheetApp.getActiveSpreadsheet().getSheets().length < numOfSheetsBefore +1){
}
在重命名和移动之前阻塞,但这只是让我的代码永远运行(对我来说也是一个谜)。
所以,我的主要问题是为什么不getSheets()
知道已放置的新工作表?
解决方案
Tanaike 建议的解决方案是在继续重命名和移动新放置的工作表之前调用SpreadsheetApp.flush()
after 。setDestination()
推荐阅读
- php - 压缩手动关闭的连接并继续处理
- java - 程序给了我一个“线程“主”java.util.InputMismatchException中的异常”
- ember.js - EmberJS 测试:从每个循环创建的目标 id
- python - 有人可以向我解释我在这里做错了什么吗?它是工作表的一部分,不是特别清楚
- reactjs - React + Redux + Firebase:如何处理定义并导出为类的 firebase 配置?
- java - 如何比较两个项目集列表并计算子集出现次数?
- rancher - Rancher:容器Rancher/Rancher满载内存
- c# - 通过 c# 与 ssh-keygen 交互
- r - 从 R 中的包 emmeans 中提取函数输出的一部分
- python - Discord.py - 命令没有注册我的所有参数