はじめに
在籍している会社で開発しているサービス内で、画像をURLから取得して処理をする機能があります。
APIとして提供していて、誰でも利用できる状態なのですが、ログを見てみるとしばしば画像取得に失敗している様子。
詳細を見ていくと、画像取得に失敗しているときのURLが、Google Driveで発行される共有URLを指定していることがわかりました。
Google Driveの共有URLについて
Google Driveの共有URL、結構クセモノ感強めな印象を受けていました。
共有URLを発行すると下記のような値が得られるかと思います。
https://drive.google.com/file/d/1zJ■■■■■■■■■■■■■■hBF/view?usp=sharing
このURLをそのままブラウザのオムニバーに張り付けてみると、画像単体ではなくて、Google Driveが開いて、その中で画像がプレビューとして表示されます。
上記の共有URLは、画像の外部URLではなくて、Google Driveのviewを表示するURLなんですね。
だからそのまま使用しても画像として認識されず、エラーになってしまいます。
対策
ではGoogle Driveは画像の外部ストレージとしては使えないのか、というと、今のところ回避策が用意されています。
答えはこちらのqiita記事にある通りなのですが、改めて自分の言葉で残します。
発端GASからSlackに連携しようと思った際に、Slackに投稿するアイコンの置き場にGoogle Driveを使いたかった。普通に共有リンクを作成すると、ビューア経由で開くリンクが生成される…
https://qiita.com/rot-z/items/299ac40361690c51ce1d
やり方だけまず書くと、下記のようなURLを指定すればよいです。
https://drive.google.com/uc?id=<ファイルID>
ここでいうファイルIDとは、共有URLの黄色い背景の箇所のことです。
https://drive.google.com/file/d/1zJ■■■■■■■■■■■■■■hBF/view?usp=sharing
つまり
https://drive.google.com/uc?id=1zJ■■■■■■■■■■■■■■hBF
とすればよいわけですね。
終わりに
できれば隠しURLではなくて、Google Drive上でも取得できるようにしてほしいな~