質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

Q&A

解決済

1回答

1575閲覧

GAS: insertImage()のエラーについて

yamato0301

総合スコア1

Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

0グッド

0クリップ

投稿2022/12/23 17:35

前提

現在 insertImage()を使用したプログラムを作っています。 引数には”https://drive.google.com”より始まる、GoogleDriveに保存された画像のURLを使用しています。(他にはURLを生成してくれるWEB上のツールにて発生させたURLを使用しました) ですがエラーが発生します。

実現したいこと

自分で画像の大きさを調整した画像を何らかの形でGoogleSpreadSheetに出力させたい。

発生している問題・エラーメッセージ

(URLは改変しています。)

Exception: Error retrieving image from URL or bad URL: https://drive.google.com/file/d/18l_t91cmgH6ETQXa1DxvbpnUpawRG/view?usp=share_link

該当のソースコード

function test() {
var Sheet = SpreadsheetApp.getActive();
Sheet.insertImage("https://drive.google.com/file/d/18l_t91cmgH6ETQXDxvbpnBhRUpawRG/view?usp=share_link",46,18,0,0);
}

試したこと

URLの制作方法を試行しました。GoogleDrive、GooglePhoto、WEB上URL発生ツール
https://ysklog.net/tool/uploader.html)(https://d.kuku.lu/)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

itagagaki

2022/12/24 00:16

スクリプトを実行しているアカウントにそのファイルの閲覧権限が無いのでは?
YAmaGNZ

2022/12/24 01:23

http://~/aaa.jpg とか画像ファイル直接のURLじゃないとダメとか
yamato0301

2022/12/24 07:31

ファイルの権限はありました。 直接のURLとはどういったものか把握できません
guest

回答1

0

ベストアンサー

現時点では、GAS の insertImage 関数で Google Drive内の画像を表示しようとする場合、引数に URL を指定しても失敗します。
(リンクを全員共有に設定していても失敗します。)
(URL を https://drive.google.com/uc?id=<ファイルID> という形式に修正しても、失敗するようです)
https://issuetracker.google.com/issues/263463280

(あくまで現時点の話であって、近い将来変わる(修正される)可能性はあります。また利用環境や展開状況によっても変わることがあります。)

現状、GAS の insertImage 関数 にURL指定で Google Drive内の画像を表示できない場合の代替方法として、URLではなく画像の Blob を指定する方法があります。
(自分の環境ではこれで表示できました)

参照:https://developers.google.com/apps-script/reference/spreadsheet/sheet#insertimageblobsource,-column,-row,-offsetx,-offsety

js

1function test() { 2 var Sheet = SpreadsheetApp.getActive(); 3 var fileid = "18l_t91cmgH6ETQXDxvbpnBhRUpawRG"; // 質問文記載のファイルでの例。ファイルIDは「https://drive.google.com/file/d/」 と 「/view~」 の間にある文字列。 4 var imgBlob = DriveApp.getFileById(fileid).getBlob(); 5 Sheet.insertImage(imgBlob ,46,18,0,0); 6}

※なお自分の環境では、Googleと無関係の外部サイトの画像であれば URL 指定で表示できるものがありました。
ただし、直接ダウンロードが制限されている場合は不可です。
たとえば、質問文記載の後半の画像アップロードサイトは、外部サイトから直接画像リンクを表示・ダウンロードしようとしても広告付きのページに強制リダイレクトされるようになっているようですので、おそらく不可です。

投稿2022/12/24 01:30

編集2022/12/24 02:18
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yamato0301

2022/12/24 07:07

解答ありがとうございました。 Png形式の画像はこのプログラムで挿入できました。 しかし、Gif形式では挿入できないようでして、GIF形式の画像を挿入する方法をご存知でしょうか? エラーメッセージ//Exception: The blob format is unsupported.
退会済みユーザー

退会済みユーザー

2022/12/24 07:23 編集

表示させようとしているのは、動画GIFでしょうか? こちらの環境では、いくつかの静止画 GIF ならば上記の回答欄のコードでスプレッドシートに表示できましたが、動画GIFはエラーになりました。 GAS の insertImages は 動画 GIF は一切表示不可であり、その他静止画GIFであっても特殊なフォーマットのGIFである場合は、対応しておらずエラーになるものと推測します。 その他サイズ制限もあるかもしれません。
yamato0301

2022/12/24 07:33

そうでしたか。動画GIFは今後のアップデート待ちになるのですね。 ご回答ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問