Blob 转换:获取 xlsx 文件

2024-04-23

我正在尝试发送一封电子邮件,其中包含xlsx文件已附加,但我遇到的问题是,当我下载该文件时,该文件以 PDF 格式打开

这是我的代码:

function sendMail() {
  var sheet = SpreadsheetApp.getActiveSheet();
  sheet.clear();
  sheet.appendRow(['test value']);

  var ss   = SpreadsheetApp.getActiveSpreadsheet();
  var ssID = ss.getId();
  var file = DriveApp.getFileById(ssID); 
  var blob = file.getBlob();

  blob.setName("test.xlsx");

  GmailApp.sendEmail(
    '[email protected] /cdn-cgi/l/email-protection',
    'Test',
    'test.',
    {
      attachments: blob
    }
  );
}

如果我尝试直接从电子邮件打开文件,它会显示:
Google Docs encountered an error. Please try reloading this page, or coming back to it in a few minutes.
To learn more about the Google Docs editors, please visit our help center.


下面的修改怎么样?

修改要点:

  • When Spreadsheet is converted to blob using DriveApp.getFileById(ssID).getBlob(), the Spreadsheet is automatically converted to PDF.
    • 需要从电子表格转换为 xlsx 文件。
  • 将 blob 附加到电子邮件时,请使用attachments: [blob].

上面反映的修改后的脚本如下。

修改后的脚本:

function sendMail() {
  var sheet = SpreadsheetApp.getActiveSheet();
  sheet.clear();
  sheet.appendRow(['test value']);

  var ss   = SpreadsheetApp.getActiveSpreadsheet();
  var ssID = ss.getId();

  // Added
  var url = "https://docs.google.com/spreadsheets/d/" + ssID + "/export?format=xlsx";
  var params = {
    method: "get",
    headers: {"Authorization": "Bearer " + ScriptApp.getOAuthToken()}
  };
  var blob = UrlFetchApp.fetch(url, params).getBlob().setName("test.xlsx");
  // Added

  GmailApp.sendEmail(
    '[email protected] /cdn-cgi/l/email-protection',
    'Test',
    'test.',
    {
      attachments: [blob] // Modified
    }
  );
}

Note :

  • In order to use this modified script, it might be required to enable Drive API at API console.
    • 在 API 控制台启用 Drive API https://console.cloud.google.com/apis/library/drive.googleapis.com/

参考 :

  • sendEmail(收件人、主题、正文、选项) https://developers.google.com/apps-script/reference/mail/mail-app#sendEmail(String,String,String,Object)

如果我误解了你的问题,我很抱歉。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Blob 转换:获取 xlsx 文件 的相关文章

  • Excel 自动填充列 X++++..Y++..Z+

    如何自动填充之间的值 选择 A 列 CTRL G gt Blanks gt OK Type press UpArrow 然后按CTRL ENTER See 这个链接 http www techrepublic com blog msoffi
  • =MATCH() 等价于多维范围

    我有一个 Excel 工作表 其中单元格 A1 C20 INT RAND 10 这是我的数据范围 单元格 E1 1 E2 2 E3 3 等 这些是我试图找到的值 我设置单元格 F1 MATCH E1 A C 0 F2 MATCH E1 A
  • Interop.Excel 和 Tools.Excel 之间的区别?

    我目前正在开发 Microsoft Excel 的插件 但我对某些事情有点困惑 两者有什么区别Interop Excel and Tools Excel 例如 之间Interop Excel Workbook and Tools Excel
  • 如何使用 google Sheet 作为数据库

    如何在 HTML Web 应用程序中生成 Google 工作表数据 并允许用户从 HTML Web 应用程序更新评论 我在谷歌表中有一些数据 通过谷歌表单提交 我想使用搜索按钮根据 请求编号 从网络应用程序搜索工作表数据 应该能够更新网络应
  • 根据当前工作簿中的匹配值编辑主工作簿中的单元格

    这里的目标是比较两个工作簿之间 A 列中的值 当前工作簿是 xlsm 目标工作簿是 xlsx 如果找到任何匹配项 匹配值同一行的 E 列中的值在目标工作簿中发生更改 在这种情况下 必须将工作簿分开 我决定通过选择当前工作簿 A2 中的第一个
  • 导出到 Excel 时如何避免“数字存储为文本”

    当我将表格从 Access 导出到 Excel 时 所有数字都显示为文本 并且单元格上有绿色箭头 有没有办法自动修复此错误 或者有另一种导出方法可以解决该错误 作为参考 这是我导出的方式 DoCmd TransferSpreadsheet
  • 仅生成一张电子表格的 PDF

    我需要一个只用一张电子表格创建 PDF 的脚本 我目前有一个生成 PDF 的脚本 但它处理整个文件 我无法将这些值复制到另一个文件 因为我需要导出的工作表是带有从另一个工作表中提取的数据的图形 你可以帮帮我吗 谢谢 function myF
  • 如何模拟“焦点”和“打字”事件

    尝试模拟 onfocus 和打字事件 但它不起作用 Sub Login MyLogin MyPass Dim IEapp As InternetExplorer Dim IeDoc As Object Dim ieTable As Obje
  • 无法在我的抓取工具中设置超时选项以防止无限循环

    我已经使用 IE 在 vba 中编写了一个脚本 在其搜索框中的网页中启动搜索 通过点击搜索按钮根据搜索填充结果 网页加载它是searchbox几秒钟后它就会打开 但是 我的下面的脚本可以处理这个障碍并以正确的方式执行搜索 现在 我有一个稍微
  • xlwings: 删除一个列 | Excel 中的行

    如何删除 Excel 中的一行 wb xw Book Shipment xlsx wb sheets Page1 1 range 1 1 clear clear 用于删除内容 我想删除该行 我很惊讶 clear 函数有效 但 delete
  • 导出到excel时如何显示前导零?

    我正在通过更改内容类型来创建 Excel 报告 Response ContentType application vnd ms excel 我有包含前导零的值 问题是导出到 Excel 时缺少前导零 e g 000123 gt 123 我知
  • 如何在 Excel 中对一组数据进行排序以匹配另一组数据?

    我有一个不按字母或数字顺序排列的数据列表 我想对同一日期的第二个列表进行排序以匹配第一个列表 我无法更改数据的顺序 我的目标是将第二组中的附加数据粘贴回第一个数据集中 DATA SET A DATA SET B 22350 BH160 10
  • 用于以两种方式提取特定值的 Google Sheets 公式

    我正在尝试使用 Google 中的电子表格做一些不同的事情 但我正在使用的公式遇到了一些问题 我希望有人能够指导我找到更好的解决方案或能够纠正我当前遇到的问题 首先 这是我从中提取的表 1 上的数据视图 Example Spreadshee
  • VBA 完成 Internet 表单

    我正在寻找将 Excel 中的值放入网页的代码 Sub FillInternetForm Dim IE As Object Set IE CreateObject InternetExplorer Application IE naviga
  • 如何等到 Excel 计算公式后再继续 win32com

    我有一个 win32com Python 脚本 它将多个 Excel 文件合并到电子表格中并将其另存为 PDF 现在的工作原理是输出几乎都是 NAME 因为文件是在计算 Excel 文件内容之前输出的 这可能需要一分钟 如何强制工作簿计算值
  • VBA ByRef 参数类型不匹配

    最初在我的主代码部分中 我有一个丑陋的 if 语句 尽管它会运行丑陋 我决定将其设为我要调用的函数 这导致我收到错误 编译错误 ByRef 参数类型不匹配 我的假设是该函数需要正确引用 尽管我一直在阅读文档并且不明白为什么 gt 声明 Sh
  • 如何在Power Query中对N列求和

    我的数据每月都会更新 因此我尝试创建一个强大的查询表 该表将显示我创建的枢转 N 列的总和 但我似乎不知道如何在强大的查询中执行此操作 我目前有这个代码 旋转后 创建要求和的列的列表 添加索引列以限制每行 添加一列 该列对该行的列进行求和
  • 输入新行并复制上面单元格中的公式

    我正在尝试创建一个 Excel 宏来执行以下操作 在文档末尾输入新行 复制上面单元格中的公式 到目前为止我有这个 Sub New Delta Go to last cell Range A4 Select Selection End xlD
  • 使用输入作为显示日期的基础

    我需要一种方法来使用用户窗体上的输入来确定将在输出上显示的日期 这是我的代码 If StatusBox Value lt 23 59 And ShiftCode Value AP Then Cells emptyRow 8 Value Da
  • 我如何以更好的方式编码而不是像这样的VBA编码

    我正在 Excel 中创建一个仪表板 但是我想知道是否有比这更好的编码方式 我想对其进行模块化 而不是这样做以使其更加整洁 Private Sub Afford If af Value True Then af afr Value Shee

随机推荐

  • IE 在模态中失去对输入字段的焦点

    我有一个相当复杂的网络应用程序 我已将其压缩为以下两个 HTML 页面 但问题仍然存在 问题 在 IE 8 和 9 中 厚盒模式 iframe 的输入字段在一秒 或更短时间 后失去焦点 它仅在模态中发生 如果您自行加载页面 焦点不会丢失 我
  • 如何为 JavaScript 生成的文本框附加 onclick 事件?

    我有一个表行 其中包含一个文本框 它有一个显示 JavaScript 日历的 onclick 我正在使用文本框向表中添加行 但我不知道如何将 onclick 事件附加到 JavaScript 生成的文本框
  • MyFaces 中的内存泄漏

    编辑 您可以在下面的评论中找到的解决方案假设更改 JSF 实现从 MyFaces 到 太阳的莫贾拉 Hi 我在 MyFaces 2 0 0 上遇到了非常烦人的问题 更准确地说 我也在 2 0 1 和 2 0 2 上检查过它 问题仍然存在 我
  • 如何使用 RDFLib 解析大数据集?

    我正在尝试使用 RDFLib 3 0 解析几个大图 显然它处理第一个图并在第二个图上死掉 MemoryError 看起来 MySQL 不再支持作为存储 您能建议一种以某种方式解析这些图的方法吗 Traceback most recent c
  • 在 Mac OS X 上使用 Python 生成新的非阻塞进程

    我找到了一些文章甚至堆栈 overflow针对这个主题的问题 但我仍然做不到 我想要做的是从 python 打开一个 firefox 实例 那么python应用程序应该继续关注自己的事情并忽略firefox进程 我能够使用以下方法在 Win
  • 如何在R中使用grep匹配表达式的开头和结尾

    我试图用 grep 命令匹配表达式的开头和结尾 但我无法做到这一点 例如 考虑以下表达式 filenames lt c S2abc 6h S2abc 4h S2abc 0h S4abc 6h S2xyz 6h 我想找到所有以 S2 开头并以
  • 如果特定文件发生更改,如何自动收到警告?

    我有一个 php 项目 当我从另一个存储库中提取并且composer lock 文件发生更改时 我应该运行composer phar install dev git 如何自动警告我 询问我是否要运行这个命令 我想某种挂钩可以解决这个问题 但
  • 通过将参数传递给 url 在谷歌地图上绘制圆圈

    我想在给定的谷歌地图网址上画一个圆圈作为叠加层 这是没有使用谷歌地图 API 的情况 因此 我想知道是否可以通过仅将某些参数传递给地图网址来实现 我正在使用的网址是 https maps google com maps saddr M5J
  • JAX-RS:是否有用于根元素、列表的一部分、Web 服务中的参数的 json 序列化器

    目前我正在设计一个 RESTful API 并使用 JAX RS 作为后端 许多响应具有以下简单形式 someList item1 item2 itemn 重要的是数组的字段名称 客户端需要它 EmberJS 数据 我尝试使用标准 Resp
  • 如何将 N 个本地最顶层提交转换为 MQ 补丁?

    我想将我的最后一次提交安排为 MQ 补丁 所有提交都是本地的 从不推送到服务器 但并非所有本地提交都会被转换 假设我进行了 10 次提交 从未推送 现在我希望将最后 5 次提交转换为补丁 我该怎么做 简洁版本 hg qimport r 5
  • Android:从触摸事件获取原始位图数据

    Is there a possibility to get an array bitmap with the raw data of the touched spots on an Android touch display See ill
  • Flutter 从 Future 方法返回 bool 类型

    这个问题与this https stackoverflow com questions 52477468 flutter futurebool vs bool type但解释对我的用例并没有多大帮助 我有一个 Future 类型的方法 它返
  • java中的动态方法调度

    class A int a 10 public void show System out println Show A a class B extends A public int b 20 public void show System
  • SQL Server 使用参数导致结果缓慢

    我有一个选择一些数据的查询 我在其中传递了一些参数 DECLARE FromAccDocNo INT 1 ToAccDocNo INT 999999999 FromDate CHAR 10 1900 01 01 ToDate CHAR 10
  • 如何设置像“YYYYMM”这样的 Postgresql 默认值日期戳?

    作为标题 如何将表的列设置为当前年份和月份的默认值 格式为 YYYYMM 例如今天的 200905 请记住 日期的格式与存储无关 如果您认为日期很重要stored在这种格式中 您需要定义自定义数据类型或将其存储为字符串 然后你可以使用组合e
  • 将 csv 列放入数组中

    我有一个带有列标题的 csv 描述 库存 mfgid 以及我不需要的其他一些标题 我需要从数组中的列标题 stock 和 mfgid 获取数据 我正在使用 fgetcsv 但它将整行放入数组中的独占键中 在 stackoverflow 上找
  • 如何将 Ruby 编译为 Javascript? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在研究一段逻辑 我想在服务器和浏览器中表达它 类似于验证表单 其中基于已输入的内容 元素之间必须存在某些逻辑关系 所以 如果我可以编写
  • 统一使用单例的最佳方法[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我想知道哪种是使用单例实例的正确方法 当我创建一个名为 Manager 的单例类并且它包含一个名为 value 的 int 变量并且我有另一个名
  • 通过代理服务器访问HTTPS站点

    我正在添加代码以使用代理服务器访问互联网 从正常 HTTP 位置请求文件时 该代码可以正常工作 但在访问安全位置 HTTPS 时则不起作用 这是运行良好的代码 URL http UnSecureSite net file xml Dim w
  • Blob 转换:获取 xlsx 文件

    我正在尝试发送一封电子邮件 其中包含xlsx文件已附加 但我遇到的问题是 当我下载该文件时 该文件以 PDF 格式打开 这是我的代码 function sendMail var sheet SpreadsheetApp getActiveS