# GAS を利用した web アプリ ## 事例(某社案件) ### 要件 以下のフローを自動化したい。 - 営業担当者がお客様の情報を取得 - マーケティング担当者が Excel シートに入力 - 計算式が組んである - Excel シートの分析結果を PowerPoint に転記 - 数値 - 図形(サイズ調整) - チャート - PowerPoint 資料をお客様に提出 追加の仕様。 - 結果を PDF で出力したい - 履歴を CSV で取得したい ### GAS を利用したアプローチ - Excel シートを Google Spreadseet 化 - 計算式をそのまま利用 - PowerPoint 資料を Google Slide 化 - 実装 - web フォーム - HTML + CSS + JS - テンプレート - Spreadsheet - Slide - データを埋め込むべき場所に目標の文字列を入れておく - script - フロー - テンプレート (Spreadsheet, Slide) をコピー - web フォームから Spreadsheet にデータ入力 - Spreadsheet の計算結果を Slide に挿入 - 数値 - 目標の文字列を計算結果で置換 - 図形 - 計算結果に応じてサイズ調整 - チャート - 目標の文字列が入った図形を置換 - GAS で web アプリを公開 ## Pros / Cons ### Pros - 追加費用なしで web アプリを公開できる - 自前サーバー不要 - 非エンジニアがロジックを作成できる - Excel や Spreadsheet で計算式を組む - ビジネスレイヤーの人 - 結果のスライドの実装コストが低い - HTML + CSS での実装が不要 - そのままエンドユーザーに渡せる - 非エンジニアが用意できる - クライアントの既存の Excel や Spreadsheet を利用可能 - Google Slide から各種フォーマットで出力可能 ### Cons - コードを書きにくい - 複数人で同時編集できない - バージョン管理が難しい - Spreadsheet のデザインの制約 - PowerPoint よりも表現力が低い - 利用できるフォントなど - 処理時間がかかる - ファイルのコピー - チャートの埋め込み - 権限まわりの制約 - クライアントへの納品に共有ドライブが必要 - ドメインをまたがってオーナー変更できない - クライアント側で公開したアプリへのアクセス制限 - コードの実行は可能 - web アプリの実行に制限 - Google アカウントを持つすべての人への公開が必要 ## ベストプラクティス ### 実装 - スクリプトにドメインロジックを実装しない - すべて Spreadsheet で済ませる - スクリプトは値の受け渡しのみを担当 - 👉 ライブラリ化できそう - web フォームにプログレスバーなどを用意 - 固まっているように見えるのを回避 ### ユースケース - ユーザーが web フォームでデータ入力後、結果の資料を取得できる web アプリ - 営業やマーケ担当者が Spreadsheet と Slide を作成 - デザイナー - web フォームのデザイン - コーダー - web フォームのコーディング - エンジニア(でなくても可、簡単な js を扱えれば OK) - Slide に目標となる文字列を配置 - 受け渡しロジックの実装