当前位置: 首页 > 知识库问答 >
问题:

脚本不会在保存为pdf之前等待图纸页面刷新

潘哲
2023-03-14

我有一个脚本,将报告保存为特定驱动器文件夹中的pdf。根据电子表格单元格B2中选择的选项,可以以三种不同的方式打印报告。我希望它为每个选项保存一个pdf。

大部分脚本都很好用。唯一的问题是,当脚本更改单元格B2的值时,工作表在保存为pdf之前不会使用新选项刷新。因此,我得到了三个不同名称的pdf,但它们的内容相同。记录器和三个不同的pdf告诉我for循环正在所有三个选项中循环。但在保存为pdf之前,电子表格不会更新为新选项。

在绝望中,我尝试在setValue命令之后输入wait命令(我知道,糟糕的编码),但没有成功。

function sendWeeklyToFaculty(){
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var folder = DriveApp.getFolderById("0B-m6KcESC3NCSG02WVhtdUVBLTQ");
var reportSheet = spreadsheet.getSheetByName("Faculty Report");

//These are the different report options
var optionArray = ["Option","Student","Percentage"];

//This cycles through each report option
for each (var info in optionArray) {
Logger.log(info);
reportSheet.getRange("B2").setValue(info);

var reportOption = info;
var pdfName ="GA Summary - By "+ reportOption;

//This bit removes any files with the same name
var files = folder.getFilesByName(pdfName + ".pdf");
while (files.hasNext()) {
  files.next().setTrashed(true);
  }

//This bit creates the new file
var sheetId = spreadsheet.getSheetByName("Faculty Report").getSheetId();
var url_base = spreadsheet.getUrl().replace(/edit$/,'');
       var url_ext = 'export?exportFormat=pdf&format=pdf'   //export as pdf

          // Print either the entire Spreadsheet or the specified sheet if optSheetId is provided
          + (sheetId ? ('&gid=' + sheetId) : ('&id=' + spreadsheetId)) 
          // following parameters are optional...
          + '&size=letter'      // paper size
          + '&portrait=true'    // orientation, false for landscape
          + '&fitw=true'        // fit to width, false for actual size
          + '&sheetnames=false&printtitle=false&pagenumbers=false'  //hide optional headers and footers
          + '&gridlines=false'  // hide gridlines
          + '&fzr=false';       // do not repeat row headers (frozen rows) on each page
      var options = {
        headers: {
          'Authorization': 'Bearer ' +  ScriptApp.getOAuthToken(),
        }
      }

  var response = UrlFetchApp.fetch(url_base + url_ext, options);
  var blob = response.getBlob().setName(pdfName + '.pdf');
  folder.createFile(blob);

  //need a bit to send a reminder e-mail to the faculty, once I get the reports to create themselves correctly.
  }
}

如何让脚本在工作表更改时等待,或强制工作表刷新?

共有1个答案

颛孙钱青
2023-03-14

尝试使用电子表格应用程序。冲洗() 对电子表格进行任何更改后,然后另存为pdf。如果不起作用,请使用SpreadsheetApp。冲洗() 实用程序。睡眠() 刷新后再试一次,这对我很有效。

 类似资料:
  • 我有一个方法,可以为WebView的WebEngine设置一个新的网页,需要等到网页加载完成后才能继续使用当前方法。 基本上我想要: 我尝试过使用ChangeListener(),但它只会在我的方法完成执行后执行。我在谷歌上搜索了许多导致更多挫折感的术语,比如“java非阻塞等待布尔值”。最终,我成功地启动了新线程(以防止应用程序GUI锁定)并使用了倒计时(与Thread.join()相反)。下面

  • Espresso的广告特性是,它总是等待Android的UI线程空闲,这样你就不必考虑任何时间问题。但我似乎发现了一个例外:-/ Espresso希望写入一个,其ID是可见的。由于swipe操作尚未完成,第一个片段和第二个片段中的都可见,因此匹配的失败,只有2个匹配项。 如果通过在swipe操作之后添加,手动强制中断,则一切正常。 有人知道怎么做浓缩咖啡等到刷动作完成吗?或者至少有人知道为什么会这

  • 如题: 在uniapp里,怎样把页面保存为本地图片?包含背景图片等。 我试了好多方法,都不行。 我是在uniapp里用的vue3写的app。需要兼容安卓和ios

  • 本文向大家介绍jQuery EasyUI 页面加载等待及页面等待层,包括了jQuery EasyUI 页面加载等待及页面等待层的使用技巧和注意事项,需要的朋友参考一下 下面一个代码片段是 easyUI 页面加载等待,代码如下所示: 下面看个工具类 基于easyui的页面等待提示层,即mask 效果图: 以上所述是小编给大家介绍的jQuery EasyUI 页面加载等待及页面等待层,希望对大家有所帮

  • 我使用的是PrimeFaces 6.1。我正在尝试使用dataExporter组件导出带有页脚的dataTable。页脚正确导出为CSV和XLS格式,但对于PDF,它只是拒绝包含它。尝试同时使用p:column的footerText和f:facet footer,得到了相同的行为。 我还尝试切换到PrimeFaces扩展导出器,它最终在PDF导出中包含了页脚,但也包含了一些我不知道如何排除的表格列

  • 问题内容: 我是新手。我正在使用获取对象列表并将其显示在第一页上的服务。然后根据单击的对象,在下一页上设置选项卡标题。但是,当我刷新页面时,列表的范围丢失了,并且选项卡头引发了异常,导致页面无法显示信息。即使刷新第二页,是否可以保留上一个屏幕上单击了哪个对象的信息? 问题答案: 您可以使用角度本地存储 角度本地存储 示例如何使用它: 使用本地存储的示例