【问题标题】:GSheet - making sure all but one sheet is hiddenGSheet - 确保除了一张之外的所有工作表都被隐藏
【发布时间】:2020-01-29 02:02:12
【问题描述】:

我正在使用 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 一张纸……那会很好地解决问题。

【问题讨论】:

    标签: google-apps-script google-sheets


    【解决方案1】:

    这应该足以隐藏除一张以外的所有工作表。

    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();
    } 
    

    【讨论】:

    • 它确实和我有类似的东西,但似乎脚本不会等待所有工作表都被隐藏然后被 pdf'ed 从而可能暴露数据。这是一个非常奇怪的错误,我无法重现它,但我已经看到了最终结果。这就是为什么我试图让它来验证所有工作表都被隐藏了。
    • 哦,天哪...我在其他地方使用过它,但没有想到这个问题。我已经对其进行了测试,它“似乎”很好。将其释放到野外并等待反馈。谢谢。
    【解决方案2】:

    今年早些时候我不得不做一些类似的事情,而这段代码被证明非常有用。 https://gist.github.com/ixhd/3660885

    【讨论】:

    • 我确实试图让它发挥作用,但我会更改学生姓名,等待“学生报告”页面更新,然后将其 Blob...但 Blob 将是第一个学生只要。我不得不放弃那个解决方案,开始隐藏,更改学生的名字,然后 pdf。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-03
    • 1970-01-01
    • 2021-12-28
    • 2019-11-30
    • 2021-01-17
    • 2016-08-14
    • 1970-01-01
    相关资源
    最近更新 更多