使用 Google Apps 脚本从 Google 表格导出 PDF 时的 setName

2023-11-29

我有这个脚本使用 Google Apps 脚本将三个单独的工作表导出为 PDF,该脚本工作正常,除了在每种情况下 PDF 均以文件名 export.pdf 导出之外。我想将它们分别重命名为“昨天”、“过去 7 天”和“过去 30 天”,有人可以帮助我实现这一目标吗?

//Menu in Google Sheet

function onOpen() {

 var ui = SpreadsheetApp.getUi();

 ui.createMenu('Dashboard')

   .addItem('Email Dashboard','emailDashboard')

   .addToUi();

}

//Convert dashboard to PDF and email a copy to user
function emailDashboard() {

 // get sheet id

 var ss = SpreadsheetApp.getActiveSpreadsheet();

 var id = ss.getId();

 // setup sheets
 var yesterdaySheet = ss.getSheetByName('Yesterday');
 var last7DaysSheet = ss.getSheetByName('Last 7 Days');
 var last30DaysSheet = ss.getSheetByName('Last 30 Days');
 var settingsSheet = ss.getSheetByName('Settings');
 var dashboardURL = ss.getUrl() + "?usp=sharing";

 // Send the PDF of the spreadsheet to this email address
 // get this from the settings sheet
 var email = settingsSheet.getRange(8,2).getValue();
 var cc_email = settingsSheet.getRange(9,2).getValue();
 var bcc_email = settingsSheet.getRange(10,2).getValue();

 // Subject of email message
 var subject = "Dashboard PDF generated from " + ss.getName() + " - " + new Date().toLocaleString(); 

 // Email Body
 var body = `A pdf copy of your dashboard is attached.<br><br>

  To access this Google Sheet,; 
   <a href="` + dashboardURL + `" >click here</a>`;


 // Base URL
 var url = "https://docs.google.com/spreadsheets/d/" + id + "/export?";
 var url_ext = 'exportFormat=pdf&format=pdf&size=A4&portrait=false&fitw=true&gid=';
  
 // Auth value
 var token = ScriptApp.getOAuthToken();

 var options = { 

  headers: { 'Authorization': 'Bearer ' + token }

   }

 // helps initialize first time using the script
 var driveCall = DriveApp.getRootFolder();  

 // create the pdf
 var responseYesterday = UrlFetchApp.fetch(url + url_ext + yesterdaySheet.getSheetId(), options);
 var response7Days = UrlFetchApp.fetch(url + url_ext + last7DaysSheet.getSheetId(), options);
 var response30Days = UrlFetchApp.fetch(url + url_ext + last30DaysSheet.getSheetId(), options);
 

 // send the email with the PDF attachment
 GmailApp.sendEmail(email, subject, body, {
  cc: cc_email,
  bcc: bcc_email,
  htmlBody: body,
  attachments:[responseYesterday,response7Days, response30Days]   
 });
}

解释:

只需在 pdf 创建部分后添加以下三行即可:

var blob_Y = responseYesterday.getBlob().setName('Yesterday' + '.pdf');
var blob_L7D = response7Days.getBlob().setName('Last 7 Days' + '.pdf');
var blob_L30D = response30Days.getBlob().setName('Last 30 Days' + '.pdf');

然后更改这部分:

 GmailApp.sendEmail(email, subject, body, {
  cc: cc_email,
  bcc: bcc_email,
  htmlBody: body,
  attachments:[blob_Y, blob_L7D, blob_L30D ]   
 });

解决方案:

//Menu in Google Sheet

function onOpen() {

 var ui = SpreadsheetApp.getUi();

 ui.createMenu('Dashboard')

   .addItem('Email Dashboard','emailDashboard')

   .addToUi();

}

//Convert dashboard to PDF and email a copy to user
function emailDashboard() {

 // get sheet id

 var ss = SpreadsheetApp.getActiveSpreadsheet();

 var id = ss.getId();

 // setup sheets
 var yesterdaySheet = ss.getSheetByName('Yesterday');
 var last7DaysSheet = ss.getSheetByName('Last 7 Days');
 var last30DaysSheet = ss.getSheetByName('Last 30 Days');
 var settingsSheet = ss.getSheetByName('Settings');
 var dashboardURL = ss.getUrl() + "?usp=sharing";

 // Send the PDF of the spreadsheet to this email address
 // get this from the settings sheet
 var email = settingsSheet.getRange(8,2).getValue();
 var cc_email = settingsSheet.getRange(9,2).getValue();
 var bcc_email = settingsSheet.getRange(10,2).getValue();

 // Subject of email message
 var subject = "Dashboard PDF generated from " + ss.getName() + " - " + new Date().toLocaleString(); 

 // Email Body
 var body = `A pdf copy of your dashboard is attached.<br><br>

  To access this Google Sheet,; 
   <a href="` + dashboardURL + `" >click here</a>`;


 // Base URL
 var url = "https://docs.google.com/spreadsheets/d/" + id + "/export?";
 var url_ext = 'exportFormat=pdf&format=pdf&size=A4&portrait=false&fitw=true&gid=';
  
 // Auth value
 var token = ScriptApp.getOAuthToken();

 var options = { 

  headers: { 'Authorization': 'Bearer ' + token }

   }

 // helps initialize first time using the script
 var driveCall = DriveApp.getRootFolder();  

 // create the pdf
 var responseYesterday = UrlFetchApp.fetch(url + url_ext + yesterdaySheet.getSheetId(), options);
 var response7Days = UrlFetchApp.fetch(url + url_ext + last7DaysSheet.getSheetId(), options);
 var response30Days = UrlFetchApp.fetch(url + url_ext + last30DaysSheet.getSheetId(), options);

 var blob_Y = responseYesterday.getBlob().setName('Yesterday' + '.pdf');
 var blob_L7D = response7Days.getBlob().setName('Last 7 Days' + '.pdf');
 var blob_L30D = response30Days.getBlob().setName('Last 30 Days' + '.pdf');
 

 GmailApp.sendEmail(email, subject, body, {
 cc: cc_email,
 bcc: bcc_email,
 htmlBody: body,
 attachments:[blob_Y, blob_L7D, blob_L30D ]   
 });
 }
 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Google Apps 脚本从 Google 表格导出 PDF 时的 setName 的相关文章

  • 如何使用 Google 脚本将数据添加到 Google 表格中的特定行

    在我的 Google 表格中 我将索引放在名为 colorRow 的变量中 我只是想向工作表中的该行添加一些数据 但数据不断进入页面下方的其他行 我究竟做错了什么 var data Some more fields in data arra
  • Google 电子表格中的换行符未在 Google 图表中输出

    这段代码工作完美 除了一个小格式问题 我找不到简单的方法来修复 作为数据源的谷歌电子表格在列中有换行符 然而 在表中 它们看起来好像只是由空格格式化的 我尝试在数据表中使用allowHthml选项 将换行符转换为标签 但这会删除所有格式并使
  • 如何将pdf页面设置设置为打印属性对话框?

    大家好 我想知道如何设置 pdf 页面设置到打印属性对话框 例如 如果我的 PDF 页面设置为横向 则布局会自动显示横向而不是纵向 如果我的 PDF 页面设置为纵向 则布局会自动显示纵向 我在这个主题上做了很多研发 但没有找到任何满意的链接
  • 将 Google 电子表格解析为 Javascript 数组

    我有一个 Google 电子表格 https docs google com spreadsheets d e 2PACX 1vRc8Lx0N wf3f1xAAXkNFUqQjaWPFcde3YjK02gCBqGpUrULwHC6NC0sn
  • IE 中的 Google 文档查看器

    我到处寻找解决方案 但找不到 我在用着谷歌文档查看器 https drive googleblog com 2009 09 view online files using google docs html查看 PDF 文件 这是一个很棒的工
  • TypeError:无法读取 Google Sheet 脚本中 null 的属性“getRange”(第 6 行,文件“Code”)[重复]

    这个问题在这里已经有答案了 我想从网页读取数据 为此我使用了导入数据功能 为了自动刷新写了一个脚本 下面是代码 我收到类似的错误类型错误 无法读取 null 属性 getRange 第 16 行 文件 Code 如何摆脱这个错误 funct
  • XOR或其他简单的文件混淆方法ios目标c

    我正在开发一个使用受版权保护的 pdf 文件的 ios 应用程序 我正在寻找一些简单的方法来混淆文件以确保安全 这些方法不需要我经历额外的大众市场 CCATS 加密审查流程 但也将确保版权所有者已尽我所能来保证他们的数据安全 当然 我用密码
  • Google Apps 脚本 - 脚本之间的通信

    Hi我的问题如下 我想创建一个小网页 在该网页上可以在 Google 日历中创建事件 但有一些限制 就我而言 我的室友可以编辑此日历来预订洗衣机 该预订不能重叠 而且我们所有人的使用天数都是有限的 我创造了私人日历 我已经创建了验证请求的脚
  • Ghostscript 转换 PDF 并输出为文本文件

    1 我需要将PDF文件转换为txt 文件 我的命令似乎有效 因为我在屏幕上看到了转换后的文本 但不知何故我无法将输出定向到文本文件中 public static string GetArgs string inputPath string
  • 如何从 Google Apps 脚本小工具重定向到另一个网页?

    我正在 Google 协作平台中构建一个网络应用程序 目前 我有两个表单 第一个表单加载电子表格并将其显示为表格 然后当您从表中选择一行时 脚本会使用 GET 请求和一些参数调用另一个 Web 应用程序 如 rowIndex X colum
  • Sharepoint 列表转 PDF 报告

    我有一个 SharePoint 列表 我需要将其转换为文档 任何类型 并将其导出为 PDF 您对执行此操作的最佳方法有什么建议吗 我有 Crystal Reports 但不确定这是否是正确的用例 您可以使用对象模型或通过 Web 服务以编程
  • Google 表格脚本 - onEdit 和“源”

    我已经努力了几天 试图让脚本发挥作用 在最基本的层面上 我的函数包含以下内容 function onEdit e var changedRange e source getActiveRange 根据谷歌的文档 这似乎是完全合法的用途 ht
  • 将 PDF 附加到另一个 PDF 文件的可用空间

    病毒帕特尔的教程 http viralpatel net blogs itext tutorial merge split pdf files using itext jar 关于如何合并和拆分 PDF 文件很有用 不幸的是 我需要的不仅仅
  • 从 Google 电子表格自定义函数发出的 Ajax 调用

    有没有人尝试过在 Google 电子表格中编写脚本来对网站进行 ajax 调用 我想让电子表格从网站上自行更新 但是在输入这段简短的代码块后 我抛出了一个错误 ReferenceError XMLHttpRequest 未定义 任何想法 我
  • 使用 Google Apps 脚本从网页提取数据时的字符编码问题

    我已经使用 Google Apps 脚本编写了一个脚本 将网页中的文本提取到 Google 表格中 我只需要这个脚本来处理特定的网页 因此它不需要是通用的 该脚本几乎完全按照我想要的方式工作 除了我遇到了字符编码问题 我正在提取希伯来语和英
  • SVG 线条描边-dasharray 无法正确打印为 PDF

    打印行与stroke dasharrayPDF 创建不同的行为 请 看着那 这image https i stack imgur com doOku png here 图A 我直接从浏览器 Chrome 获取的屏幕截图 图B是同一页面的打印
  • 即使单击“允许”后,也会出现“执行该操作需要授权”消息

    我最近遇到了一个授权新的 Google App Script 项目的问题 特别是使用 Cloud SQL 管理 API 的项目 相同的代码存在于之前授权的 GAS 项目中并且工作正常 但是如果我获取 GAS 项目的副本并尝试第一次运行某个函
  • 在 python 中创建带有工具提示的 pdf

    这是流行且高度赞扬的 Python 副本在 R 中使用工具提示创建 pdf https stackoverflow com questions 4691780 create pdf with tooltips in r 简单的问题 有没有办
  • 我的 PDF 打开时可以 ping 我的服务器吗?

    我每天有一项 cron 工作 通过电子邮件将 PDF 发送给客户 我想知道有多少 PDF 文件被打开 有哪些可用的技术 网页中的标准技术是包含一个 img 标签 其中包含对记录 ping 的服务器端点的 src 引用 但PDF似乎不允许外部
  • 使用 PDFBox 在 Android 中创建 PDF

    我正在尝试通过我的 Android 应用程序创建 PDFPDFBoxapi 但出现以下错误 java lang NoClassDefFoundError org apache pdfbox pdmodel PDDocument 我已经将以下

随机推荐

  • 从 C# 调用 PHP Web 服务

    我目前正在尝试用 C 调用 PHP Web 服务 我一直在尝试在互联网上找到的数十种解决方案 但没有运气 并且没有一个与我有相同的问题 我对PHP不熟悉 我可以从我的 C 成功调用authenticate get string auth i
  • 如何注入EPartService

    我正在开发 e4 应用程序 我想在 Part 和 Handler 之外注入 EPartService 当我注入 EPartService 时 我会得到空指针错误 public class DisplayRuntimePart Inject
  • 更改 Java 中的当前工作目录?

    如何从 Java 程序中更改当前工作目录 我能找到的有关该问题的所有内容都表明您根本无法做到这一点 但我不敢相信事实确实如此 我有一段代码 它使用硬编码的相对文件路径从通常启动的目录中打开一个文件 我只是希望能够在不同的 Java 程序中使
  • 如何解开双可选?

    如何解开返回的字符串 可选 可选 蓝色 var cityName String if let cityAnno annotation as MGLAnnotation cityName String stringInterpolationS
  • 标头是什么?

    什么是
  • 从 LibreOffice Basic 调用 C 共享库函数

    我试图从 LibreOffice Basic 调用 C 共享库函数 但当它到达 Declare 行时 我总是收到 基本运行时错误 未实现 这只是为了一件有趣的事情 但无法做到这一点让我很烦恼 Declare 语句如下所示 Declare F
  • Erlang 及其堆内存消耗

    我一直在 HP Proliant 服务器上运行高度并发的应用程序 该应用程序是我用 erlang 编写的文件系统索引器 它为在文件系统上找到的每个文件夹生成一个进程 并将所有文件路径记录在碎片化的 Mnesia 数据库中 数据库由disc
  • CSS 填充剩余容器宽度

    我有这个标题栏 我需要名为 middle 的元素来填充 div 中剩余的空白 我该怎么做 header background red middle background orange display inline block right b
  • 通过 App Delegate 在视图之间共享数据

    我有一个关于在视图之间共享数据的问题 希望它不是太基础 我在 appDelegate 中有一个 NSMutableArray 其中包含 Object1 Object2 Object3 创建新对象 并将其添加到数组中 时 我需要在下一个视图上
  • 从 ruby​​ 内部加密数据包,无需依赖 Knife

    目前要加密数据包 我必须这样做 system knife data bag from file TemporaryEncrypting enc file path secret file Secret Key Path 这不起作用 因为 K
  • 是否可以使 Page.IsPostBack 独立于 ASP.net 为真?

    如果检查用户的角色以确定他们是否可以访问某个页面 则仅将此检查放在一个页面中是否安全 if Page IsPostBack 是否有可能client引起Page IsPostBack true独立于 ASP net 也就是说 客户端 POST
  • 从我的计算机python中提取子网掩码

    亲爱的 我打算提取我的子网掩码 我使用了下面的代码 但子网掩码始终是 255 255 255 255 这是错误的 import socket Import socket module import netifaces def get ip
  • ActionLink 或 BeginForm 提交中不弹出 AjaxOptions.confirm

    这是新手 所以如果我在另一个答案中错过了这一点 请耐心等待 我尝试在 Ajax BeginForm 中使用 AjaxOptions 但它没有弹出 所以我转而在 ActionLink 中测试它 但仍然无法让它工作 对于 ajax beginf
  • Java 字符串分割不起作用

    Java 专家 请查看下面的 split 命令代码 并让我知道为什么最后两个空值未被捕获 String test 1 O1 0 0000 0 0000 String splittest test split System out print
  • 带有 DataKinds 的类型级映射

    我有一个常见的模式 其中有一个类型级别的列表 我想应用一种类型构造函数 gt 到列表中的每个元素 例如 我想更改类型 Int Double Integer to Maybe Int Maybe Double Maybe Integer 这是
  • 如何在全日历中显示日期和工作日名称?

    我正在使用完整的日历 APIapi在我的网站上显示一个受 promo com 日历启发的日历 如下所示 这是我使用 React js 组件的解决方案 import React useState useEffect useContext us
  • React 上的连接被拒绝错误

    我正在尝试将我的 React 应用程序连接到 Rails api 但是 我似乎无法获取数据 错误信息是 GET http localhost 3000 net ERR CONNECTION REFUSED Fetch Error S Typ
  • jQuery - $(document).ready 和 $(window).load 之间有什么区别?

    之间有什么区别 document ready function my code here and window load function my code here 我想确保 document ready function and func
  • 不需要连接到金融机构的信用卡校验和和验证

    我所知道的验证是 整个卡号的校验和应为零 范围是0 9 根据卡类型检查第一位数字 根据卡类型检查长度 根据卡类型检查 CCV 长度 我认为所有主要类型都是 3 当然 请确保它是可接受的卡类型并且未过期 还有其他验证吗 我想很多人都不知道所有
  • 使用 Google Apps 脚本从 Google 表格导出 PDF 时的 setName

    我有这个脚本使用 Google Apps 脚本将三个单独的工作表导出为 PDF 该脚本工作正常 除了在每种情况下 PDF 均以文件名 export pdf 导出之外 我想将它们分别重命名为 昨天 过去 7 天 和 过去 30 天 有人可以帮