![見出し画像](https://assets.st-note.com/production/uploads/images/128570557/rectangle_large_type_2_7258e5777380179b921f5dad4f282ed5.png?width=1200)
GASで作成したWebアプリ(Webサイト)でGoogleドライブ内の画像が表示されなくなった問題を解決する
この2024年1月に入って少し話題となった、Googleドライブ内の画像が 今までの方法で Webサイトで表示できなくなった問題を取り上げてみたいと思います。
後半はGoogleドライブの画像をWeb掲載する注意点と、少し動きのある Webを GASで作るサンプルコードも!
Googleドライブ関連ってことで、先週までの流れと少し繋がる部分もあるかなと。
先週は Googleスプレッドシートを操作する GAS Spreadsheet Serviceで スプレッドシートの共有メンバーを出力したり、共有を操作するネタを書きました。
Googleドライブ内の画像が Webページ埋め込みで表示できなくなった問題の解決策
「前置きはいいから、困ってるから早く答えが知りたいんだ~」
って人の為に、最初に結論(解決策)を書いておきますね。
![](https://assets.st-note.com/img/1706322626954-ahJ4Jl3JqQ.png?width=1200)
■いままでの書き方(現在は 上の画像左のように表示されない)
<img src="http://drive.google.com/uc?id={画像のファイルID}" />
※または
<img src="http://drive.google.com/uc?export=view&id={画像のファイルID}"/>
↓
■現在の書き方(上の画像右のように 以前と同じ表示になる)
<img src="https://lh3.googleusercontent.com/d/{画像のファイルID}" />
※{画像のファイルID}部分(中カッコも含め)を、実際利用している画像ファイルIDと差し替えてください。
これだけです。
タイトルでは GASで作成した Webサイト(Webアプリ)と記載していますが、それ以外のサイト(WordPressで作成したサイトや ヤフオクなど)で Googleドライブ内の画像を入れていた場合も同様です。
画像ファイルIDの手前部分を変更するだけなんで、これなら検索と置換で一発ですね!
他にも幾つか対応方法はあるようですが、上の方法が一番シンプルでベストかと思います。
参考にさせていただいたサイトはコチラ
少し経緯というか背景に触れておきましょう。
Googleの仕様変更で、今まで出来ていた Googleドライブ内のファイルの Webへの埋め込みが出来なくなった
![](https://assets.st-note.com/img/1706317487193-kUORDBFBjB.png)
2023年1月、ふと自分が過去に GASで作ったWebアプリを見たら、画像が表示されなくなってる。。
右クリックから 「画像を読み込む」でも 表示されない。
デベロッパーツール見ると
![](https://assets.st-note.com/img/1706344842005-GKpp0LPXiZ.png?width=1200)
Failed to load resource: the server responded with a status of 403 ()
ってなってますね。今までは普通に表示できてたんだが・・・。
![](https://assets.st-note.com/img/1706317712997-BGSIMmPJhB.png?width=1200)
「新しいタブで画像を開く」だと画像が開けるから、Googleドライブのアクセス不具合って感じでもなさそう。
なんでだ~!!
と思いつつも、たまたまかなと2,3日放置してたんですが、一向に解消されない。
検索すると ネット上にも同様の症状が出てるという声が多くあったんで、こりゃ仕様変更だなと。
![](https://assets.st-note.com/img/1706318369535-dqeELqMeYs.png?width=1200)
で、よくよく調べたら 2023年の10月にGoogleWorkspace アップデートブログで発信されていた
「Google ドライブで必要だったサードパーティ Cookie に関する今後の変更について」
この件だったみたい。
確かに
特定のワークフローまたはアプリでドライブのダウンロード用 URL を利用している場合は、2024 年 1 月 2 日までにドライブとドキュメントを公開するフローに切り替えていただく必要があります。
って書いてあった。
でも、まさか 同じ Googleの GASで作った Webサイトへの画像掲載で引っかかるとは思ってなかった~。
今までの Googleドライブ内の画像を Webページで使う方法
![](https://assets.st-note.com/img/1706319024948-4NsBDvpaPz.png?width=1200)
GAS もしくは 他の方法で作成した Webページに Googleドライブ内の画像を載せる方法は、多くのサイトで基本的には Googleスプレッドシートの image関数で Googleドライブ内の画像を表示させる方法と一緒です。
使用する画像ファイルの共有設定で、「一般的なアクセス」を 「リンクを知っているインターネット上の誰もが閲覧できます」としておく
Googleドライブ上で取得した 画像の共有URLを直リンクに変換しておく
ポイントはこの2つ。
まず、画像へのアクセス(閲覧)をリンクを知っている全員として、
![](https://assets.st-note.com/img/1706319440936-NSghIDQaLX.png)
その上で 共有 > リンクをコピーで
![](https://assets.st-note.com/img/1706319587338-pgA88Ch25P.png?width=1200)
https://drive.google.com/file/d/ {この部分が 画像のファイル ID} /view?usp=drive_link
こんな感じのURLが取得できるので、d/ の後ろの ファイルID部分 を使って、
http://drive.google.com/uc?id={画像のファイルID}
このようにするか
https://drive.google.com/uc?export=view&id={画像のファイルID}
このように変換したURLを使います。
これがいわゆる Googleドライブ内の画像への直リンクURLと言われるものです。
GoogleスプレッドシートのIMAGE関数での利用方法は、過去 noteを参照ください。
現在もこの直リンクを使って、image関数で Googleドライブ内の画像を スプレッドシートに表示することはできます。
=IMAGE("http://drive.google.com/uc?id={画像のファイルID}")
しかし、先に書いた通り 2024年1月の Googleドライブの仕様変更によって、 Webページに Googleドライブ内の画像を掲載する HTMLの記述
<img src="http://drive.google.com/uc?id={画像のファイルID}" />
こちらが使えなくなってしまったわけです。
2023年以前に公開、更新された「 Googleドライブに保存した画像をWebサイトやブログで使う方法」を紹介しているサイトは、ほぼこの方法を紹介しています。
しかし 2024年1月以降は、この方法ではWebへの画像表示は出来ません。
それ以前からも iOS(iPadやiPhone)の Safariでは GoogleドライブからWebページに 挿入した画像が表示されない問題はあったようです。
Googleからの 公式の対応策 コレジャナイ感が凄い・・・
では、Googleドライブの仕様変更に際して、Googleからはどのような対応方法がガイドされているのか?
それが ↓ コチラです。
ウェブサイトで iframe(ドキュメント内で別の HTML ページを読み込む HTML 要素)を使用してコンテンツを読み込みます。ドライブで目的のファイルに移動し、次の手順でご対応ください。
・Workspace のファイル(Google ドキュメント、スプレッドシート、スライド、フォームのファイル形式)の場合は、ファイルの Google ドキュメント公開 URL を使用します。
・その他のファイルの場合は、一度ドライブで開いてからオーバーフロー メニューで [新しいウィンドウで開く] を選択します。さらにオーバーフロー メニューを開いて [アイテムを埋め込む…] を選択し、表示された iframe HTML タグを使用します。
うーん、iframeで 埋め込めってことみたいですが・・・。とりあえず指示通りやってみましょう。
画像なんで「その他のファイル」(下の方法)ですね。
まず ドライブ内の画像ファイルを ダブルクリックで開き
![](https://assets.st-note.com/img/1706320710406-ngfCCCQDBq.png?width=1200)
オーバーフロー メニューで [新しいウィンドウで開く] を選択します。
↓
オーバーフローメニューとか言われても「わかりづれぇ!」
つまりは右上の ︙(3点リーダー)から、新しいウィンドウで開くを選択ってことですね。
![](https://assets.st-note.com/img/1706321697190-UgJq9wSSIp.png?width=1200)
https://drive.google.com/file/d/{ 画像ファイルID }/view
新しいウィンドウ(タブ)で開かれた画像はこのようなアドレスになっています。
ここで 再度オーバーフローメニュー (右上の ︙)から 「アイテムを埋め込む」を選択。
![](https://assets.st-note.com/img/1706321861958-V7Zb3xpc8r.png?width=1200)
<iframe src="https://drive.google.com/file/d/{ 画像ファイル ID }/preview" width="640" height="480" allow="autoplay"></iframe>
この iframe タグを使えってことみたいです。
HTML触る人なら、この時点でどんな感じの表示になるイメージできますよね。嫌な予感しかしませんがw
HTMLに入れてみると。
![](https://assets.st-note.com/img/1706322310028-JF4jurUDfc.png?width=1200)
やっぱりー。
Googleドライブで画像プレビューする画面をそのまんま埋め込んだだけです。背景透過のPNGが悲しいことになってますねw
![](https://assets.st-note.com/production/uploads/images/128915958/picture_pc_c3364c162f465bd862dfdcf17e6636d0.gif?width=1200)
ユーザーが求めてる解決策はこれじゃないです!!
全世界のユーザーがこの改悪に影響を受けており、しかも画像だけではなく Googleドライブ内の音声ファイルや動画をWebに埋め込んでいる人にも影響があったようです。
これには 全米が!いや全世界が泣いた!
Issue Trackerも このトピックは 阿鼻叫喚だったようです。
ついでに Googleドキュメントの改悪も愚痴っとく
今回の改悪は、ほんと Googleらしい 俺様っぷり全開と言えます。
「俺が王様(キング)」だ、「俺がルールだ」 って感じですね。
ブルーロックの 馬狼 のイメージでしょうか?
先日変更された Googleドキュメントの 毎回 行の先頭に @ が浮かび上がってくるやつも、本当にいらないんですが・・・。
![](https://assets.st-note.com/production/uploads/images/128917678/picture_pc_712edc96fc4592e67ccb86652362eff7.gif?width=1200)
Google的には 「俺様の美技に酔いな」って感じなんでしょうね。
こちらも管理者もユーザーも制御できないという・・・。シンプルに文章を書きたい人には 非常にストレスだし改悪もいいとこです。
![](https://assets.st-note.com/img/1706323431856-IC1qujJkMP.png?width=1200)
検索で解決策を見つける
![](https://assets.st-note.com/img/1706324494001-9PTE8P3KNg.png?width=1200)
というわけでGoogleから案内された 対応策は役に立たないんで、別の回避方法を漁ってみました。
stackoverflowとか issue trackerで 話題になってたので、凄い人たちは既に解決策を見つけてたわけですが、一応自分でも色々検証して デベロッパーツールから取得できる アドレス
https://lh3.googleusercontent.com/fife/{ ものすごく長い ファイルIDとは違う ユニークID }
これを使う方法を発見しました。
でもこれだと ファイルIDがそのまま使えないし、このアドレスが長すぎでイマイチだなーってことで却下。(一応 GAS UrlFetchAppで取得することは出来るけど遠回り感があるなと)
とりあえず 他の日本語の主要サイトで紹介されていた 解決策を試してみました。
1. lh3のURL に u/0/d が付くアドレスを使う方法
<img src="https://lh3.google.com/u/0/d/{ 画像ファイルID }" />
2. サムネイルを使った方法
<img src="https://drive.google.com/thumbnail?id={ 画像ファイルID }&sz=w1000 />
3. サムネイルを使った方法(サイズ指定前バージョン)
<image src="https://drive.google.com/thumbnail?sz=w1000&id={ 画像ファイルID }"/>
![](https://assets.st-note.com/img/1706326168416-NDxnTRES4R.png?width=1200)
Googleログインしてない状態だと 画像が表示されない
https://lh3.google.com/u/0/d/
を使う 方法は 却下として、
サイズ指定がイマイチだけど サムネイル法 で一番かなと考えてましたが、
<img src="https://lh3.googleusercontent.com/d/{画像のファイルID}" />
一番シンプルな コチラの方法を見つけたんで、こちらを採用。
一括置換でこちらに置き換えることにしました。
ただしリンク先のサイトにも書いてありますが、公式にGoogleがガイドしている方法ではありません。
いきなりGoogle側が仕様変更して使えなくなる可能性もあるので、その点はご注意ください。
その他の解決策
URLを置き換える以外の方法も見つけました。上記の単純URL置き換えよりも コードの変更が多いですが参考までに。
こちらだと 画像以外の音声ファイル等の場合も対応可能?
GASでリダイレクト先のURLを取得する回避法
BASE64エンコードで HTMLに埋め込む回避法
Googleドライブ の画像を Webサイトで扱う注意点
とりあえず 今回の Googleドライブ 内の画像が Webサイトで表示できない問題は解決できました。
でも、本当に Googleドライブの画像をWebに掲載して大丈夫ですか?
便利さ手軽さに目がいって基本を理解せず使っていると、こわーいことになるかもしれませんよw
※銭天堂は昭和世代的には「笑ゥせぇるすまん」みたいなもんだなと
というわけで、少し Googleドライブで共有した時のプライバシーの話もしておきましょう。
恐怖!?:Webに埋め込んだ画像から オーナーの Googleアカウントは辿れる
![](https://assets.st-note.com/img/1706328989937-1k3qP5xuyk.png)
今回の方法で Googleドライブの画像を 掲載した場合、その Webページの閲覧者は 画像のファイルIDから Googleドライブ上の画像共有画面へアクセスすることが可能です。
さらにそこから、ファイルのオーナー情報(Googleアカウント)も確認することが出来ます。
たとえば、上のように 埋め込まれた画像を 右クリック、画像アドレスをコピー を選択すると
https://lh3.googleusercontent.com/d/{ 画像ファイルID}
↑ 画像ファイルIDが入った この URLが取得できます。
これを Web掲載用のアドレスを取得の逆変換をして
https://lh3.googleusercontent.com/d/{ 画像ファイルID}
↓
https://drive.google.com/file/d/{ 画像ファイルID}
このようにドライブ上の表示URLに変換すれば
![](https://assets.st-note.com/img/1706329290580-BypWg8UNR3.png?width=1200)
閲覧者側(Googleログインしていなくて)は、画像を共有したドライブ上表示画面にたどり着くことが出来ます。
![](https://assets.st-note.com/img/1706329485193-45kCfYzYNR.png?width=1200)
ここで ︙(3点リーダー)から 詳細を開くと。
![](https://assets.st-note.com/img/1706329568717-VBtHFu8twz.png?width=1200)
オーナーのGoogleアカウントの アイコン、ニックネーム、メアドが
スケスケだぜ!
![](https://assets.st-note.com/img/1706347167253-Xq0JJB3WLK.png)
というわけです。
これを理解せずに気軽に Googleドライブ内の画像を Webで 使ってしまうと、Googleアカウントを本名で使ってたり、恥ずかしいアイコンを使ってたり、メアドに誕生日を入れていた場合、プライバシー的に後で痛い目を見ることがあります。
十分に気をつけましょう。
Googleドライブの共有シリーズでも、そのうち触れたいと思っていますが、Googleスプレッドシート、ドキュメント、その他の画像やPDF、動画など Googleドライブ内のどんなファイルだろうが、
「共有」したら 閲覧者には Googleアカウント情報はバレます
これは、仕様なんで仕方ありません。そこを理解した上で使いましょう。(逆にリンク共有の場合は、閲覧者側の情報はオーナーにバレることはありません)
他にも 悪意あるユーザーによる GASの不正実行にも注意が必要です。
Googleドライブの 画像を Webサイトで扱う際の便利ワザ
プライバシー、セキュリティの注意点を理解した上で、基本的に身内で使うものであれば、 Googleドライブは 無料でWebページを作る上で便利なツール です。
ドライブ内の画像を Webに掲載する際の便利ワザを 紹介しておきます。
Webサイトに 掲載するにあたり、1つ2つなら 共有から URLコピー という手順で IDを取得する方法でもよいですが、複数画像を扱うなら一括で楽に処理がしたい、ですよね?
そんな時に使えるのが、シート関数やGASです。
Googleスプレッドシート 関数を使って Webページ用画像URLを生成する
![](https://assets.st-note.com/production/uploads/images/128931352/picture_pc_69f0b3bc602f1d7de575b38d0cd77ed4.gif?width=1200)
まずは GASはよくわからないって人向けに シート関数を使う方法を。
前提として、Googleドライブ内のファイルのURLは 一括取得が可能です。上のように Webサイトで使いたい複数の画像が 1つのフォルダに入っているなら、
Ctrl + A で全ファイル選択 (※ただし 多すぎると失敗するので注意)
Ctrl + C で コピー
Ctrl + Shift + V で URL貼り付け (スプレッドシートでセル選択して)
ショートカットを使った、この方法が使えます。(Windows PCでのショートカットです)
![](https://assets.st-note.com/production/uploads/images/128932234/picture_pc_a35861cf3b7f270f6b70473ef2c829b9.gif?width=1200)
この方法で取得できる URLは
https://drive.google.com/open?id={ ファイルID }&usp=drive_copy
このようなものです。
これは 以前 image関数について書いた noteでも紹介しました。
あとは、このURLから ID部分を抜き出して、頭の部分を https://lh3.googleusercontent.com/d/ と置き換えるだけですね。
![](https://assets.st-note.com/img/1706333176948-S51MZUuT8W.png?width=1200)
C1セルに https://lh3.googleusercontent.com/d/ を入れておいて A2以降のA列の URLを一括変換するなら
=ARRAYFORMULA(REGEXREPLACE(A2:A,"^.+?=(.+)&.+$",C1&"$1"))
こんな式でいけます。
これは ファイルID部分が 最初の = から & までの間にある文字列であるという規則性を使って、正規表現を扱える REGEXREPLACE関数で処理をしています。
ID部分は カッコで括ることでキャプチャグループ化して、置換後で $1として再利用しています。
置換後を C1&"$1" とすることで、
https://lh3.googleusercontent.com/d/ { ファイルID }
という URLを生成しています。
このまま img タグで使えば 画像がWebページに表示できますね。
もちろん、imgタグや、その周りのHTMLを含めて数式内で生成してしまっても良いです。
たとえば A列にGoogleドライブから 一括コピペ(Ctrl +v)したファイル名(リンク付き)、B列には 一括コピペ(Ctrl + Shift + v)のURLとした場合、
=ARRAYFORMULA(REGEXREPLACE(B2:B,"^.+?=(.+)&.+$","<tr><td>"&A2:A&"</td><td><img src ="""&D1&"$1"" alt="""&A2:A&"""/></td>"))
こんな式で HTMLを シート上で生成。
![](https://assets.st-note.com/img/1706334922265-tvUumcU9d0.png?width=1200)
GAS側で用意した HTML の <table> </table> の中に貼れば
![](https://assets.st-note.com/img/1706335186282-FFYVjHVoeB.png?width=1200)
![](https://assets.st-note.com/img/1706335255050-Qz5VP8QO1n.png)
こんな感じで Webに表示できます。初心者にも簡単な方法かなと。
GASを使って Googleドライブのフォルダ内の 画像ファイルから Webページ用画像URLを生成する
もう1つは GASを使って フォルダ内をループ処理で、個々のファイルIDを取得、そこから画像URLを生成という方法です。
たとえば GASで以下のような コードを用意します。
function GetImageUrl() {
const sheet = SpreadsheetApp.getActiveSheet();{
const folderId = "{ 画像が保管されているフォルダのID }"; //フォルダID
const urlHeader = 'https://lh3.googleusercontent.com/drive-viewer/'; //画像用URLヘッダー
const folder = DriveApp.getFolderById(folderId);
const files = folder.getFiles();
let result = [["ファイル名","ID"]];
while(files.hasNext()){
let file = files.next();
let fileType = file.getMimeType();
if(fileType.match("image")){
let name = file.getName();
let id = file.getId();
console.log(name,id);
result.push([name,urlHeader+id]);
}
}
sheet.getRange(1,1,result.length,2).setValues(result);
}
※{ 画像が保管されているフォルダのID } の箇所を 実施のフォルダIDに差し替える必要があります
上のコードを スプレッドシートのコンテナバインドスクリプトとして、エディタを開いてコピペ(記述)し保存、 実行すると
![](https://assets.st-note.com/production/uploads/images/128937410/picture_pc_6a4c214ba487c83a6cd97f99fecf87e2.gif?width=1200)
このようにファイル名、Web掲載用URLが スプレッドシートに書き出されました。
folder.getFiles()
で取得した ファイルイテレーターから 個々のファイル情報を取得するには、
while(files.hasNext()){
を使います。
※イテレーターなので 配列メソッドの map や forEach が使えない為
このように シート関数や GASを使うことで、GoogleドライブのファイルIDの取得やファイル名、埋め込み表示用の URL が簡単に取得できます。
Googleドライブの フォルダ内画像を ボタンを押すたびにランダム表示するWebアプリ
![](https://assets.st-note.com/production/uploads/images/128938824/picture_pc_1a9990f11caf0e39872abbec5aa52fd2.gif)
最後にオマケです。 Googleドライブ内画像と GASと エディタ内で HTML、Javascritpを書けば、こんなことが出来るよーってサンプルを紹介しておきます。
こういう多少動きのあるWebのサンプルを見ると、普段はスプレッドシート周りだけGASでいじってる人も、HTMLServiceを使ってみたくなりますよねw
Googleドライブの フォルダ内画像を ボタンを押すたびにランダム表示するWebアプリ のサンプルコード
![](https://assets.st-note.com/img/1706395782171-muM0adYkBN.png?width=1200)
まずは、Googleドライブに適当なフォルダを作成(名前はなんでもよい)、そこにサイトで使う画像を入れておきましょう。
画像数は多すぎない(10個程度)方がよいです。
画像を全て選択(Ctrl + A)してから、共有でアクセス(閲覧)をリンクを知っている全員としておきましょう。
そして、フォルダを開いた状態の アドレスバーのURL の赤線部分 のフォルダIDを取得(後で使うのでコードのコピペの後でもOK)。
https://drive.google.com/drive/u/1/folders/{ フォルダID }
次に スプレッドシートのコンテナバインドでも、スタンドアロンでもどっちでもいいんですが、スクリプトエディタを立ち上げ
コード.gs (GAS)の方は
//指定したフォルダから 画像ファイルのIDを取得
function GetImageUrl() {
const folderId = "{ 画像が保管されているフォルダのID }"; //フォルダID
const folder = DriveApp.getFolderById(folderId);
const files = folder.getFiles();
let result = [];
while(files.hasNext()){
let file = files.next();
let fileType = file.getMimeType();
if(fileType.match("image")){
let name = file.getName();
let id = file.getId();
result.push([name,id]);
}
}
result = JSON.stringify(result);
return result;
}
//Webページを生成
function doGet(){
const html = HtmlService.createTemplateFromFile("index");
return html.evaluate();
}
こんな感じにしておきます。
フォルダ内の 画像の ファイル名と IDと取得する GetImageUrl 関数と、Webページを生成する doGet 関数の2つを記述しています。
関数 GetImageUrl は 上で書いたやつの改良版です。
スプレッドシートへの書き出しは辞めて、JSON.strigifyで JSON文字列 をリターンする 式にしています。(ID取得だけど 関数名を変えるの忘れちゃった)
フォルダ内の 画像が多い場合は、先にスプレッドシートに書き出しておいて、それを読み込んだ方がよいですが、10枚程度で個人や身内の遊びWeb(アクセス数が多くない)なら この方法で問題ないかと思います。
![](https://assets.st-note.com/img/1706338282798-3dnrlPbQ7b.png)
さらにエディタで +ボタンから HTMLを選択して 名前を index として、
index.html というファイルを作ります。(.htmlは勝手につく)
index.html の中身は こんな感じで。
<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<body>
<input type="button" value="占う!" onclick="uranai()">
<p id="p1">今日の貴方は!?</p>
<script>
const urlHeader = 'https://lh3.googleusercontent.com/d/';
const arr = JSON.parse(<?= GetImageUrl() ?>);
function uranai(){
const n = Math.floor(Math.random() * arr.length);
let result = `今日のあなたは ${arr[n][0]} です。<br>`
+`<img src = '${urlHeader}${arr[n][1]} ' alt='${arr[n][0]}'>`;
const p1 = document.getElementById("p1");
p1.innerHTML = result;
}
</script>
</body>
</html>
ここで フロッピーボタンを押して プロジェクトを保存
![](https://assets.st-note.com/img/1706342031416-J8mhOimOPH.png?width=1200)
まずはコードが保存できました。
ここで登場する HTML側の JavaScriptで
const arr = JSON.parse(<?= GetImageUrl() ?>);
このように スクリプトレットという書き方で GAS側の関数の結果を取得し、parseで 二次元配列に戻す方法や
innerHTML で 表示されている Webページの一部だけ ボタンを押すたびに動的に変化させる記述など
p1.innerHTML = result;
色々と本当は説明が必要な記述が登場してますが、ここで解説すると長くなるので割愛。
機会があれば この noteでも触れるかもしれませんが、初心者向けに丁寧に解説しているサイトがいっぱいあるので、それらを参考にした方がよいです。
※ そもそも mir もWeb系を得意としてるわけではありません。
↑ 少し内容は古い部分もありますが、丁寧に記述されてる「いつも隣にITのお仕事」さんは おススメです。
Webアプリのデプロイの流れ
作成した HTMLをWebで見れる(操作できる)ようにする為には、デプロイが必要です。
右上のデプロイを押して、初回は 「新しいデプロイ」を選択
![](https://assets.st-note.com/img/1706338837601-TCDVioeUpo.png)
種類の選択ボタンで、歯車ボタンから ウェブアプリを選択します。(単なる表示するだけのWebサイトでもウェブアプリという位置づけ)
![](https://assets.st-note.com/img/1706338906702-r2m5Ze4guz.png?width=1200)
他の人に使ってもらう、もしくはシークレットモードで開いてテストしたい場合は、アクセスできるユーザーを 全員とします。
![](https://assets.st-note.com/img/1706339067672-7xJwbFlp6o.png?width=1200)
アプリによっては、「次のユーザーとして実行」の箇所をアクセスしている(利用する)ユーザーにしたり、アクセスをGoogleアカウントで制限する必要があります。
企業版 GoogleWorkspaceだと、アクセスできるユーザーで社内メンバー(ドメイン内)を指定できるので、セキュアにウェブアプリが運用できます。
最後に 右下の「デプロイ」を押します。
初回は アクセスの承認が必要になりますが、
![](https://assets.st-note.com/img/1706339327803-MXeOu3Ywf9.png?width=1200)
これはいつもの GASの初回に出るものと一緒です。
英語表示になっちゃった場合でも慌てずに。
![](https://assets.st-note.com/img/1706340184750-gYma6dOcRF.png?width=1200)
スクリプトの承認が終われば デプロイ完了です。
![](https://assets.st-note.com/img/1706340356351-N6fcUhgbKb.png?width=1200)
ここで表示される ウェブアプリの URLが、作成された WebのURLです。クリックしてそのまま開くか、コピーして ブラウザのアドレスバーに入れて開いてみましょう。
デプロイ後の 修正・変更
![](https://assets.st-note.com/img/1706340798137-SFYnQJrWkB.png)
デプロイ後に コードを変更して 上書き保存しても、Webサイト側には自動反映されません。
変更を反映させるためには デプロイの更新が必要です。
たとえば、上のように一部 HTMLで表示させる文字を変更した場合は、まずはプロジェクトの保存をして
デプロイを管理から 更新を行います。
![](https://assets.st-note.com/img/1706340917949-xEGrf4kcgN.png)
編集の ペンボタンを押して
![](https://assets.st-note.com/img/1706341075864-ydd1pvUxXs.png?width=1200)
バージョンのプルダウンから 「新しいバージョン」を選択して「デプロイ」ボタンを押します。
![](https://assets.st-note.com/img/1706341168134-A8ILFjf8iP.png?width=1200)
この方法であれば ウェブアプリのURLは変わらずそのままで、中身だけ更新されます。
※更新ではなく 新しくデプロイしてしまうと、URLは変わってしまいます。
![](https://assets.st-note.com/production/uploads/images/128944395/picture_pc_a3967c53946db10cf10bb7b006419b43.gif)
コメント部分の修正が反映されました!!
GASで Webアプリ作成は気軽で面白い
最後の Webアプリのサンプルは 完全に余談でしたね。
ただ、今回の本題である Googleドライブの画像が Webサイトで表示されない問題の解決策は、Webサイト作らない人には関係ない話になっちゃうなーと思いまして。
でも、この noteを見てるってことは GASには興味がある?ってことかなと。
GASは Googleのスプレッドシートや Gmail、Googleドライブの操作、自動化に非常に便利ではありますが、サーバー無し、新たに別のサービスに申し込みなしで、気軽にWebサイト、Webアプリを作れるという点も非常に魅力的です。
もちろんセキュリティに留意する必要はありますし、Webとなってくると、今度は HTMLやCSS、JavaScript が登場してくるので、グッと難易度や覚えることも増え、ついでにエラーも増えてきますw
でも、こんな感じでちょろっとコード書いて、Webページや簡単なWebアプリ作れるのって面白いですよね?
なんか面白そうだな、試してみようかな!と思っていただけるきっかけとなればと思い、後半は珍しく HTML付きのコードを掲載してみました。(有料コンテンツにするか迷ったけど、そこまで大したコードでもないなとw)
次回はそろそろ、本職のスプレッドシートのネタに戻りたいと思います。
いいなと思ったら応援しよう!
![mir](https://assets.st-note.com/production/uploads/images/85302011/profile_6bb7e63e3aff027fa87115b6d37e1556.jpg?width=600&crop=1:1,smart)