Google ドライブに画像を保存しました。スクリプトでその画像をスプレッドシートに挿入したいと考えています。しかし、写真の Google ドライブ URL でInsertImage(url x,x)を呼び出すと、エラーが発生します。
We're sorry, a server error occurred. Please wait a bit and try again.
この画像をスプレッドシートに挿入するにはどうすればよいですか?
Google ドライブに画像を保存しました。スクリプトでその画像をスプレッドシートに挿入したいと考えています。しかし、写真の Google ドライブ URL でInsertImage(url x,x)を呼び出すと、エラーが発生します。
We're sorry, a server error occurred. Please wait a bit and try again.
この画像をスプレッドシートに挿入するにはどうすればよいですか?
InsertImage で Google Drive 上の画像の URL を使用することはできません。
これには未解決の問題があり、これは数年間の機能要求でした。スターを付けて更新を受け取ります。
問題 145 : insertImage() が Google ドキュメントに保存されている画像で機能しない
安定した URL を持つ外部サーバーで画像をホストする必要があります。
実際には、高度なドライブ SDK を使用して、必要なファイル オブジェクトのメタデータを取得できます。
GitHub Gistを作成して、Google ドライブに保存されている画像ファイルからサムネイル画像の URL を取得し、シートの部品番号に基づくファイル名パターンに従って、それらを画像数式としてスプレッドシートに自動的に挿入します。
URL を取得したら、それを使用して =IMAGE(url) 式を作成し、画像をセルに直接挿入することができます。これはより便利な場合があります。または、insertImage()関数を使用して画像をセルに挿入することもできます。これらのフローティング オーバーレイの 1 つとして文書化します。URL参照だけでなく、画像データ自体を挿入したい場合は、この同じ方法を使用してバイナリblobを取得できますが、式では機能しません(insertImage()関数を使用したオーバーレイのみ、ブロブバージョン)。UrlFetchApp を使用してファイルから画像のサムネイルを取得する方法のGoogle Issue 4344の例を次に示します。
function getThumbnail(fileId) {
var file = Drive.Files.get(fileId);
return UrlFetchApp.fetch(file.thumbnailLink).getBlob();
}
リンクのみが必要な場合は、getBlob() 関数を省略してください。フルサイズの画像が必要な場合は、代わりに selfLink プロパティを試してください。詳細が必要な場合は、私のGistを参照してください。
これは間違いなく回避策であるため、引き続き機能するかどうか、または将来的に Google が最終的に妥当な実装を提供するかどうかはわかりません。ただし、スクリプト ファイルの Resources : Advanced Google services およびDevelopers Consoleで Drive SDK を有効にする必要があることに注意してください。うまくいかない場合は、スクリプト プロジェクトのプロジェクト ID が、コンソールのプロジェクトに関連付けられているものと一致していることを確認してください。コンソールで実際に新しいプロジェクトを作成し、スクリプトで一致するように ID をリセットする必要がありました。
実際、やり方はとても簡単です。Google ドライブのパブリック フォルダに画像を配置し、http://googledrive.com/folders_id/image_name.jpgを使用して取得します。うまくいかない場合は教えてください