Closed9
gas with clasp でシンプルなウェブアプリをデプロイする

clasp create
は引数を受け付けなくなってた

clasp open
も多分 clasp open-script
に変わってそう

あと↑の clasp open-script
を実行して開かれるブラウザのデフォルトのgoogleアカウントで作ってないとうまく開けない (400番エラー)

なんか一生URLからアプリ開けなかったからブラウザのデフォルトユーザーをGASプロジェクトのオーナーアカウントと揃えたら開けた

なんかシークレットブラウザでもいい感じに開けるようになった、なんでだろう 🤔
とりあえず設定画面で「次のユーザーとして実行」を「ウェブアプリケーションにアクセスしているユーザー」にしておくのが良さそうに思った

なんとなくの手順
-
npm i -g @google/clasp
でclaspをインストール、clasp login
でログインしておく- このとき、可能ならブラウザのGoogleデフォルトアカウントでログインするのが良さそう
- 適当な作業ディレクトリで
npm init -y
してnpmを初期化 -
npm i -D @google/clasp
とnpm i -S @types/google-apps-script
する -
clasp create
でGASプロジェクトを作成する -
.clasp.json
のrootDir
を自由に変更する(src
とする前提で話を進めます)。rootDir
を変更したらappsscript.json
はそのディレクトリの中に移動しておく。scriptExtensions
はTypeScriptで書くなら[".ts"]
にする -
appsscript.json
にWebアプリ用の記述を追加する("webapp"
まわり)。↓のコードブロックを参照(timezone
も変更してる)。 -
src
ディレクトリにindex.html
とserver.ts
を作成する。HTMLの方はよしなに。server.ts
はHTMLをレンダリングして返す処理が必要なので↓のコードブロックの内容で。 -
clasp push
でpushする。上書き確認されたらy
で。 -
clasp deploy -d webapp
する。 -
clasp open-web-app
で説明にwebapp
とあるものを選択するとブラウザでデプロイされたウェブアプリが開ける。 :tada:
-
clasp open-script
でブラウザでGASプロジェクトを開いて、設定からappsscript.json
の表示をonにしておくと良さそう。- これをやっておくと、公開範囲を変更したときの
appsscript.json
の変更内容を確認できて嬉しそう。
- これをやっておくと、公開範囲を変更したときの
{
"timeZone": "Asia/Tokyo",
"dependencies": {},
"exceptionLogging": "STACKDRIVER",
"runtimeVersion": "V8",
"webapp": {
"executeAs": "USER_ACCESSING",
"access": "ANYONE"
}
}
function doGet() {
const htmlOutput = HtmlService.createHtmlOutputFromFile("index")
.setTitle("Sugoi Web App") // HTMLのタイトルは表示されないのでここで設定する
.addMetaTag("viewport", "width=device-width, initial-scale=1"); // これも、HTMLに書いた内容は反映されないのでここで設定する
return htmlOutput;
}
これであとはビルド結果とかを気合でhtml1ファイルにバンドルしてデプロイすれば完璧になれるってワケ。 :smirk:
このスクラップは2ヶ月前にクローズされました