Closed9

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

haruyuki_16278haruyuki_16278

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

haruyuki_16278haruyuki_16278

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

haruyuki_16278haruyuki_16278

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

haruyuki_16278haruyuki_16278

なんとなくの手順

  1. npm i -g @google/clasp でclaspをインストール、 clasp login でログインしておく
    • このとき、可能ならブラウザのGoogleデフォルトアカウントでログインするのが良さそう
  2. 適当な作業ディレクトリでnpm init -yしてnpmを初期化
  3. npm i -D @google/claspnpm i -S @types/google-apps-script する
  4. clasp createでGASプロジェクトを作成する
  5. .clasp.jsonrootDirを自由に変更する(srcとする前提で話を進めます)。rootDirを変更したらappsscript.jsonはそのディレクトリの中に移動しておく。scriptExtensionsはTypeScriptで書くなら[".ts"]にする
  6. appsscript.jsonにWebアプリ用の記述を追加する("webapp"まわり)。↓のコードブロックを参照(timezoneも変更してる)。
  7. srcディレクトリにindex.htmlserver.tsを作成する。HTMLの方はよしなに。server.tsはHTMLをレンダリングして返す処理が必要なので↓のコードブロックの内容で。
  8. clasp pushでpushする。上書き確認されたら y で。
  9. clasp deploy -d webapp する。
  10. 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ヶ月前にクローズされました