google-apps-script - GSheet - 确保除了一张之外的所有工作表都被隐藏
问题描述
我正在 GSheet 中开发一个成绩簿程序,但遇到了一个新问题。我需要隐藏除“学生报告”表之外的所有工作表,然后将其 pdf 并通过电子邮件发送。它工作得很好,直到我收到报告说脚本没有完成隐藏工作表,然后继续制作 pdf。我加入了“睡眠”,但希望采取更主动的方法。
我想出了这个想法,但它只是超时。我希望有一个do-while循环,不断检查工作表的隐藏属性......一旦除了一个之外的所有东西都被隐藏(即学生报告)......它应该继续。任何帮助,将不胜感激。
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheets=SpreadsheetApp.getActiveSpreadsheet().getSheets();
var sheetName = "Student Report";
for(var i=0;i<sheets.length; i++){
if(sheets[i].getName()!=sheetName){
sheets[i].hideSheet();
}}
var StudentReport = ss.getSheetByName("Student Report");
ss.setActiveSheet(StudentReport);
do {
for (var k=0;k<sheets.length;k++){
var CountVisible = sheets.length;
if(sheets[k].isSheetHidden()){
CountVisible = CountVisible -1;
Logger.log(CountVisible);
}}
} while (CountVisible!=0);
//added wait time to esnure all sheets are properly hidden before next step
// Utilities.sleep(400);
或者,如果有人知道如何只 pdf 一张纸……那会很好地解决问题。
解决方案
这应该足以隐藏除一张之外的所有内容。
function hideAllSheetsExceptThisOne(sheetName) {
var sheetName=sh||'Student Report';//default for testing
var ss = SpreadsheetApp.getActive();
var sheets=ss.getSheets();
for(var i=0;i<sheets.length; i++){
if(sheets[i].getName()!=sheetName){
sheets[i].hideSheet();
}
}
SpreadsheetApp.flush();
}
推荐阅读
- visual-studio-code - 在 VS Code 中配置 tasks.json 文件以在 Mac 上使用特定版本的 C++ 编译 C++
- unity3d - 从检查器调试菜单或 Unity 编辑器中的检查器自由编辑四元数
- python-3.x - 字典python的二元组出现
- node.js - Puppeteer page.click 在无头模式下不起作用
- spring-boot - 在 Spring Cloud 配置更新中重新加载 CamelContext 或路由
- java - 虽然我使用 AsyncTask 应用程序没有响应
- python - 是否可以在 tkinter Canvas '.find_withtag' 中使用通配符?
- arrays - Laravel - Eloquent where with array
- reactjs - 安装我的 PWA 时未加载外部资源(Service Worker 问题?)
- regex - 电子邮件正则表达式匹配 [dot] for "." & [at] 表示“@”