2016-04-18 16 views
1

Google Apps Scriptを使用して実際にテキストの代わりにイメージファイルを返すウェブアプリケーションを作成しようとしています。私はそれとして、それは同じくらい簡単試してみました:Google Apps Script Webアプリケーションから画像を返す方法は?

function doGet() { 
    var file = DriveApp.getFileById('[redacted]'); 
    return file; 
} 

ウェブアプリとしてそれを公開し、それを実行し、それだけでスクリプトが完了したが何も返さなかった

言います。

私は適切image/pngでそのMIMEタイプを、印刷することができるので、ファイルが、存在し、アクセス可能であることを知っています。 Google Apps Scriptに特に精通しているわけではありませんが、ウェブ開発はもちろんのこと、私はそれが何か分かりませんし、イメージを返す際の入門用資料を探しています特に私がどこから始めようとしているのかわからないときは、Google Apps Scriptのメリットは特に実りありません。

Google Apps Scriptを介してウェブアプリケーションから画像ファイルを返すことは可能ですか?

答えて

2

doGet()特別なコールバック関数は、次の2つの方法を使用することができます。最も一般的な方法は、ブラウザにHTMLコンテンツを提供することです。 doGet()がファイルを返す場合、ブラウザはそのファイルをHTMLとしてレンダリングする方法を知らないでしょう。したがって、この場合に返されるコンテンツのタイプは有効なHTMLでなければなりません。

doGet()も「コンテンツサービス」と一緒に使用して、Apps Scriptを呼び出して何らかのコンテンツを返すことができます。 JSON、RSS、およびXMLをTextOutputsとして提供するメソッドがありますが、あらゆる種類のファイルタイプを返すMIMEタイプ設定はありません。

ファイルをテキストコンテンツに変換して返信し、ブラウザでフォーマットすると、その可能性があります。イメージファイルのようなものを返す場合は、イメージをBlobに変換し、blobを文字列として取得してから文字列を返す必要があります。

1

ファンクションdoGetは、ファイルオブジェクトではなくHtmlOutputオブジェクトを返す必要があります。このようなオブジェクトはHtmlServiceを使用して作成されます。例:

function doGet() { 
    var html = '<img src = "https://googledrive.com/host/{file id}">'; 
    return HtmlService.createHtmlOutput(html); 
} 

この例では、もはやGoogleのshuts down Drive Hosting 2016年8月31日、後を動作しません。

したがって、提案はそれらを提供するHTMLを生成するために他の場所で静的なコンテンツをホストし、AppsスクリプトのWebアプリケーションを使用することです:

function doGet() { 
    var html = '<img src = "https://example.com/filename">'; 
    return HtmlService.createHtmlOutput(html); 
} 
関連する問題