如何从 Google Apps Script Web App 返回图像?

Chr*_*ica 6 web-applications google-apps-script

我正在尝试使用 Google Apps 脚本制作一个 Web 应用程序,该应用程序实际上返回一个图像文件而不仅仅是文本。我试过就这么简单:

function doGet() {
    var file = DriveApp.getFileById('[redacted]');
    return file;
}
Run Code Online (Sandbox Code Playgroud)

将其发布为 Web 应用程序并执行时,它只是说

脚本完成但没有返回任何内容。

我知道该文件存在并且可以访问,因为我可以打印它的 MIME 类型,这是一个正确的image/png. 所以我在这里遗漏了一些明显的东西,但并不是特别精通 Google Apps 脚本,更不用说任何类型的网络开发了,我不知道我遗漏了什么,正在寻找有关返回图像的介绍性材料来自 Google Apps Script 也不是特别有成效,尤其是当我完全不确定从哪里开始时。

甚至可以通过 Google Apps 脚本从网络应用程序返回图像文件吗?

Ala*_*lls 4

doGet()是保留的函数名称。该函数名称保留用于侦听对 Web 应用程序的已发布 URL 发出的 GET 请求。对 Web App 的已发布 URL 发出的 GET 请求就是“事件”,该doGet()函数由该事件触发。

doGet()函数可以返回两种不同类型的输出。

  • HTML 输出对象 - HtmlService
  • 文本输出对象 - ContentService

最常见的用途doGet()是将 HTML 内容返回到浏览器。但是使用HtmlService返回文件内容是行不通的。

doGet()还可以与“内容服务”配合使用,返回多种形式的文本内容。

文本内容可以以纯文本形式返回,也可以在返回之前设置文本内容的MIME Type。MIME 类型可以是:

  • 原子
  • CSV
  • 伊卡
  • 脚本语言
  • JSON
  • RSS
  • 文本
  • 维卡
  • XML

但没有 MIME 类型设置来返回文件类型。

如果文件可以转换为文本内容,返回,然后在浏览器中格式化,那么这是可能的。如果要返回图像文件之类的内容,则需要将图像转换为 Blob,然后将 Blob 作为字符串获取,然后返回该字符串。