Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 如何从google sheet下载PNG格式的图表_Google Apps Script_Google Sheets_Google Sheets Charts - Fatal编程技术网

Google apps script 如何从google sheet下载PNG格式的图表

Google apps script 如何从google sheet下载PNG格式的图表,google-apps-script,google-sheets,google-sheets-charts,Google Apps Script,Google Sheets,Google Sheets Charts,我试图在Google Sheet中创建一个自定义菜单,允许我将当前Google Sheet文件中所有工作表中的所有图表下载到PNG图像中,使用图表标题作为图像名称,保存到我的Windows PC的默认下载目录中 我打算用Python使用GoogleSheetAPI来做这件事,结果发现,答案基本上是说我可以用GoogleApps脚本来做这件事 我找到了一个解释如何将图表导出到幻灯片中的方法,但不知道如何将图表下载为PNG文件 这可能吗 如果是的话,有人能告诉我正确的方向吗?谢谢 方法: 您可以使用

我试图在Google Sheet中创建一个自定义菜单,允许我将当前Google Sheet文件中所有工作表中的所有图表下载到PNG图像中,使用图表标题作为图像名称,保存到我的Windows PC的默认下载目录中

我打算用Python使用GoogleSheetAPI来做这件事,结果发现,答案基本上是说我可以用GoogleApps脚本来做这件事

我找到了一个解释如何将图表导出到幻灯片中的方法,但不知道如何将图表下载为PNG文件

这可能吗

如果是的话,有人能告诉我正确的方向吗?谢谢

方法: 您可以使用函数
getCharts()
从文档中获取图表,使用函数
getAs()
将它们转换为图像,然后从Google Drive获取链接

一小条 推荐

谢谢@Alessandro,这一切都如愿!但是,与直接手动保存为PNG相比,图像质量似乎更低。此外,图表还带有自定义的图表样式,即线宽、点大小等,getAs()函数似乎不保留这些自定义设置。如果有一种方法可以获得与直接手动下载相同的图像,请告诉我该方向好吗?再次感谢!我明白了,我发现这不会发生在幻灯片上。您可以使用幻灯片演示文稿作为代理,将图表保存为图像,并最终以与以前相同的方式从驱动器中获取URL。
function myFunction() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var chart = sheet.getCharts()[0];

  // create a proxy slide
  var proxySlide = SlidesApp.create("proxySlide");
  var proxySaveSlide = proxySlide.getSlides()[0];
  var chartImage = proxySaveSlide.insertSheetsChartAsImage(chart);

  // Get image from slides
  var myimage = chartImage.getAs('image/png');
  var url = DriveApp.createFile(myimage).getUrl();

  // delete the proxy slide
  DriveApp.getFileById(proxySlide.getId()).setTrashed(true);

  return url;
}