将 Google 工作表图表导出为图像

2024-05-07

请您帮助了解如何使用谷歌脚本将图表导出到图像。

我写了这段代码,但它不起作用。我担心 APIgetAs已弃用。

function TestEmailCharts(){
    var sheet = SpreadsheetApp.getActiveSheet();

  var charts = sheet.getCharts();

  if(charts.length!=0)
  {
  var chartBlobs=new Array(charts.length); 
  var emailBody="Charts<br>";
  var emailImages={};
  for(var i=0;i<charts.length;i++){
    chartBlobs[i]= charts[i].getAs("image/jpeg").setName("chartBlob"+i);
    emailBody= emailBody + "<img src='cid:chart"+i+"'><br>";
    emailImages["chart"+i]= chartBlobs[i];
  }

  MailApp.sendEmail({
    to: "[email protected] /cdn-cgi/l/email-protection",
    subject: "test2",
    htmlBody: emailBody,
    inlineImages:emailImages});
  }
}

要重现该问题,请创建一个 Google 电子表格 使用一些数据创建一个简单的图表。

将此代码添加到脚本中。 代替[电子邮件受保护] /cdn-cgi/l/email-protection与您的电子邮件

通常您应该收到一封包含图表图像的电子邮件 但问题是您将收到一封带有黑色图像的电子邮件。

此致。


将 Google 工作表图表导出为图像

通过电子邮件:首先创建图表,然后获取其 blob。然后将 blob 作为附件发送。

function createPieChart(){
  var sheet = SpreadsheetApp.openById("<ID>").getSheetByName("<SheetName>");
  var chartBuilder = sheet.newChart() 
      .asPieChart() 
      .set3D()
      .addRange(sheet.getRange("A20").getDataRegion())
      .setPosition(16, 5, 0, 0)
      .setOption('title', "Total hour split in 2020");
  var blob = chartBuilder.build().getBlob();
  sendMail(blob);
}

function sendMail(img){
  MailApp.sendEmail({
    to: "[email protected] /cdn-cgi/l/email-protection",
    subject: "test",
    htmlBody: "fair enough",
    attachments: [img]}); //If this gives you problems, replace img with img.getAs(MimeType.JPEG)
} 

到另一个电子表格(与图表的源数据不同):

类似地,创建图表,然后将 blob 作为图像插入目标工作表中:

function createPieChart(){
  var srcSheet = SpreadsheetApp.openById("<ID>").getSheetByName("<SheetName>"); 
  var destSheet = SpreadsheetApp.openById("<ID>").getSheetByName("<SheetName>");       
   var chartBuilder = srcSheet.newChart() 
      .asPieChart() 
      .set3D()
      .addRange(sheet.getRange("A20").getDataRegion())
      .setPosition(16, 5, 0, 0)
      .setOption('title', "Total hour split in 2020");
   var blob = chartBuilder.build().getBlob();
  destSheet.insertImage(blob, 1, 1); 
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 Google 工作表图表导出为图像 的相关文章

随机推荐

  • 使用 cmd.exe 更改目录并在该目录中运行命令

    我想做的就是 更改到不同驱动器的特定目录 在该目录中运行命令 例如目录 我需要使用从不同驱动器开始的 cmd exe 在一行中执行此操作 我会这样做 c cd temp dir 所以到目前为止我在一份声明中 cmd c c cd temp
  • 角度守卫,文档中的声明不明确

    我想深入了解角度 所以我读了the docs http angular io这非常有帮助 现在我正在研究守卫 我在文档中读到了这个声明 路由器首先从最深的子路由到顶部检查 CanDeactivate 和 CanActivateChild 防
  • 在读取之前设置未定义的 javascript 属性

    var tr tr SomeThing SomeThingElse console log tr SomeThing SomeThingElse console log tr Other undefined tr get function
  • 同一张表上的多对多

    有趣的是我从来没有遇到过这个 我从来没有想过一个人可以在一张桌子上建立 多对多 关系 直到我开始开发一种用户可以互相 加好友 的系统 社交网络 标准查找表 至少以我习惯使用的方式 在这里不合适 让我们保持简单 用户表有 id 和 name
  • android-button 背景可绘制不起作用

    这是我的 xml 可绘制代码 名称为 bts theme xml
  • Android:如何在触摸事件中手动实现长按?

    简短版本 我想要一种方法来在 onTouchEvent 上启动基于时间的计数器 并测试在响应之前是否已经过了一定的时间 作为手动 LongTouch 检测 解释 我有一个自定义 imageView 可以通过两根手指滑动滑入 滑出屏幕 我想向
  • Angular 2 测试 - 获取 DOM 元素样式

    我想在 Angular 2 应用程序中测试隐藏显示按钮的功能 测试是用 Jasmine 编写的 所以我需要检查display相关元素的属性 我怎样才能使用 Angular 获得这个属性debugElement 测试代码 let input
  • 我不应该在 Spring Boot 项目中使用“new”关键字吗?

    我正在研究 Spring Boot Rest API 最后我确实使用了new关键字在这里和那里 我想知道 当我在程序中使用 new 关键字时 我是否做错了什么 而如果在实际项目中绝对禁止使用new关键字 如果答案是肯定的 我应该注释我编写的
  • C# 中多个类的别名

    我想 正在努力 使我的代码更具可读性 我一直在使用以下类别名 using Histogram EmpiricScore
  • 加载包时 R 会话中止

    我的 RStudio 0 99 879 R 3 2 3 OSX 10 11 3 崩溃R Session Aborted每次运行都会出现错误提示require ggvis v0 4 2 我已经重新安装了 R RStudio 和 ggvis 没
  • 多个 Rails 应用程序,单个 MySQL 数据库

    我打算为 site com api site com admin site com 分别创建多个 Rails 应用程序 所有应用程序都将从一个 MySQL 数据库访问相同的表 应用程序和数据库在同一服务器上运行 对于上述访问场景 Rails
  • 如何列出当前正在验证的拉取请求中更改的所有文件(在 VSTS 中)?

    我有一个 PR 验证版本 我想列出 PR 中更改的所有文件以及状态 源在每个构建上同步 因此 在合并 PR 更改之前 源位于修订版A 通常origin master 让我将 PR 合并提交指定为B 我当前的实现调用git diff tree
  • iPhone - SSL 连接

    学习通过 iPhone 连接 ssl Web 服务的最佳起点是什么 到目前为止 我通过 SOAP 等通过 http 进行了一些基本连接 但我没有使用 https 的经验 任何好的资源 教程 起始参考 use nsurl class 都值得赞
  • UIButton突出显示区域延伸到按钮之外

    当用户触摸 UIButton 时 应启动突出显示状态 当他将手指滑到按钮之外 仍然没有抬起手指 时 按钮突出显示应该停止 并且当他抬起手指时 不应触发按钮 这种行为正是 iOS 的工作原理 但我对仍然应用突出显示的有效区域感到有点惊讶 对于
  • AngularJS 服务位于单独的文件中

    我的 app js 包含 var app angular module myApp config routeProvider function routeProvider http 服务看起来像 app service MyService
  • Python 扩展方法

    好的 在 C 中我们有这样的东西 public static string Destroy this string s return 所以基本上 当你有一个字符串时 你可以这样做 str This is my string to be de
  • Dagger 2:如何从 FragmentFactory 的子组件绑定父组件中的 Fragment Map

    我有这个 Dagger 2 配置 应用程序组件 kt Singleton Component modules AndroidSupportInjectionModule class AppModule class ActivityBindi
  • 枕头成像导入错误

    我通过 pip 将 Pillow 3 0 0 安装到 32 位 Windows 7 PC 上的 Python3 5 上 从 PIL 导入图像 给我 File C Python 3 5 lib site packages PIL Image
  • 当我打开在 Xcode 4 中创建的 Google 地图项目时,Xcode 5 会警告我的架构设置

    我刚刚更新到新发布的 Xcode 5 我正在开发一个使用 Google 地图 iOS SDK 的 iOS 应用程序 当我在 Xcode 4 中开发时 我改变了我的Architectures在我的项目设置中进行设置 按照 Google 的步骤
  • 将 Google 工作表图表导出为图像

    请您帮助了解如何使用谷歌脚本将图表导出到图像 我写了这段代码 但它不起作用 我担心 APIgetAs已弃用 function TestEmailCharts var sheet SpreadsheetApp getActiveSheet v