首页 > 解决方案 > 如何根据 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()知道已放置的新工作表?

标签: google-apps-script

解决方案


Tanaike 建议的解决方案是在继续重命名和移动新放置的工作表之前调用SpreadsheetApp.flush()after 。setDestination()


推荐阅读