https://github.com/00kenno/expense_report_form
Google Apps Script による経費精算申請フォーム
https://github.com/00kenno/expense_report_form
custom-form custom-form-fields google-apps-script google-spreadsheet
Last synced: 5 months ago
JSON representation
Google Apps Script による経費精算申請フォーム
- Host: GitHub
- URL: https://github.com/00kenno/expense_report_form
- Owner: 00kenno
- Created: 2025-04-10T05:35:44.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2025-11-29T11:28:58.000Z (7 months ago)
- Last Synced: 2025-11-30T05:43:17.817Z (7 months ago)
- Topics: custom-form, custom-form-fields, google-apps-script, google-spreadsheet
- Language: HTML
- Homepage:
- Size: 3.83 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# 経費精算申請フォーム
➔ デモページは[**こちら**](https://script.google.com/macros/s/AKfycbzcfYVeeMSKhGk_sj8BYYwdl7ZLyvZTAJPf8Hb-x7IEZlEONKxFN-62XeHpFv2fPIF1cg/exec)
## 概要
- 東京理科大学鳥人間サークル鳥科で使用する,経費精算申請フォームの生成ライブラリです.
- Googleスプレッドシートと直接接続し,フォームから送信されたデータを安全に記録します.
- 複数項目の送信,税率計算,申請先や購入場所の個別設定などに対応しています.
- 何かあれば制作者に[XのDM](https://x.com/MeganeKinoko_)やメール(irongolem0100@gmail.com)などで連絡してください.
> [!NOTE]
> このリポジトリ内のdocsはGitHub Pagesで公開されており,フォームのファビコンはここから取得しています.
## 使い方

以下,わかりにくいかもしれない部分に関する説明です.
### 「+(プラスマーク)」ボタン
- 画面下部のこのボタンを押すと,新しいアイテムが追加され,複数の商品に関する内容を同時に送信することができます.
### - 「一括」「個別」入力切り替え機能
- 「一括」:すべてのアイテムに一括で内容を適用します.
- 「個別」:それぞれのアイテムに別々の内容を適用します.
### 税率計算機能
- 「税込」:税率計算機能は無効です.
- 「税抜」:税率計算機能が有効です.「税率」に従って自動的に計算されます.
### 「補正」について
- 販売店によっては,商品の合計金額に対して税率をかける場合があります.その場合,このフォーム上での税率計算後の金額と異なってしまうことがあります.
- フォーム上の合計金額と実際の合計金額の差を補正する際は,「補正」を「あり」に切り替えて税額を補正してください.
### 「スプシはこちら」について
- データ送信先のGoogleスプレッドシートを新しいタブ(またはウィンドウ)で開きます.
### 「このフォームについて」について
- このGitHubリポジトリを新しいタブ(またはウィンドウ)で開きます.
## 更新履歴
更新履歴を開く
2025-11-02:
- 「申請者」と「購入場所」,「購入目的」のデフォルトを設定する関数を追加.
2025-11-01:
- バインド(紐づけ)されたスプレッドシートと直接リンクする形式に変更.
2025-09-29:
- 「申請先」と一致する名前のスプレッドシートのシートが存在しない場合,自動的に追加される機能を実装.
- タイトル上部の画像及びファビコンを変更する関数を実装.
2025-09-17:
- 「割引額」入力欄の未入力チェックを無効化.
2025-07-11:
- ライブラリのデプロイを利用する形式に変更.
2025-07-07:
- 項目(Category)選択機能を実装.
- アイテムが常に1つ以上存在するように修正.
- 未入力欄の赤枠表示の問題を修正.
- 警告メッセージの色を修正.
2025-05-31:
- ファイルをアップロード.
## 引継ぎの方法
### 0. Googleアカウントでログインし直す
Chromeブラウザの場合(ここをクリック)
使用するアカウントのプロファイルを作成し,ログインしてください.既にログインしている場合,操作は必要ありません.
その後,
Googleドライブにアクセスします.
【Google Chrome】プロファイルの追加設定と切り替え方法 | eguweb(エグウェブ)

その他のブラウザの場合(ここをクリック)
ログイン情報が複数あると,Google Apps Scriptが正しく動作しない可能性があります.
Googleドライブにアクセスし,「全てのアカウントからログアウト」してから,使用するアカウントでログインし直してください.

---
### 1. Googleスプレッドシートを準備する
Googleドライブにスプレッドシートが保存されていることを確認してください(画像では「test」としています).

まだスプレッドシートを作成していない場合(ここをクリック)
画面左上の「新規」から,「Googleスプレッドシート」をクリックすると,新しくスプレッドシートが作成されます.

「無題のスプレッドシート」をクリックすると,名前を変更することができます.
「〇〇代経費申請」など適当な名前を入力します(画像では「test」にしています).
少し待って,名前の右側に「ドライブに保存しました」という表示が出れば完了です.

---
### 2. 拡張機能としてのApps Scriptを作成
「拡張機能」から「Apps Script」をクリックします.

---
### 3. プロジェクト名の変更
「無題のプロジェクト」をクリックしてください.

プロジェクト名を変更し,「名前を変更」をクリックしてください.

---
### 4. ライブラリの追加
「ライブラリ」の右にある「+」をクリックしてください.

スクリプトIDを入力し,「検索」をクリックしてください.(スクリプトIDは以下でコピーできます.)
**スクリプトID**:`1lqOvEXcBEAAfzkD4aZGJjShQuhE7bcA3JlCZrCoaVzm-0qRNzXQG-14h`

最新の「バージョン」(一番大きな数字)を選択し,「追加」をクリックしてください.(IDは変更しないでください.)

ライブラリが追加されます.

---
### 5. コード.gsの編集
以下のコードスニペットから「コード.gs」の例をコピーしてください.
**コード.gs**
```
function initializeData () {
//会計担当者へ/////////////////////////////
// #1 適当なタイトルを設定してください.
ExpenseReportForm.setTitle("経費精算申請フォーム");
// #1.5 タイトル上の画像とファビコン,回答のデフォルトが設定可能です.
// ※デフォルトで鳥科仕様になっているため,鳥科で利用する場合には設定不要です.
// ExpenseReportForm.setTitleLogoUrl(); // タイトル上に表示される画像を設定できます.引数なしで実行すると,鳥科のロゴが表示されなくなります.設定例 : "https://lh3.googleusercontent.com/d/{画像のファイルID}"
// ExpenseReportForm.setFabiconUrl(); // ファビコンを設定できます.引数なしで実行すると,GASのファビコンが適用されます.設定例 : "https://drive.google.com/uc?id={画像のファイルID}&.png"(こちら は拡張子必須です)
// ExpenseReportForm.setDefaultName("-"); // 申請者の名前のデフォルトを設定できます.
// ExpenseReportForm.setDefaultRetailer("-"); // 購入場所のデフォルトを設定できます.
// ExpenseReportForm.setDefaultPurpose("-"); // 購入目的のデフォルトを設定できます.
// #2 申請先のスプシの「シート名(ApplyTo)」と「項目(Category)」を追加してください.
// スプシにない「シート名」は自動的にその名前で作成されます.
ExpenseReportForm.addApplyTo("運営");
ExpenseReportForm.addCategory("運営", "理大祭");
ExpenseReportForm.addCategory("運営", "鳥コン");
ExpenseReportForm.addCategory("運営", "新歓");
ExpenseReportForm.addCategory("運営", "TF");
ExpenseReportForm.addCategory("運営", "外部イベント");
ExpenseReportForm.addCategory("運営", "ラジコン");
ExpenseReportForm.addCategory("運営", "その他");
ExpenseReportForm.addApplyTo("設計");
ExpenseReportForm.addCategory("設計", "桁");
ExpenseReportForm.addCategory("設計", "その他");
ExpenseReportForm.addApplyTo("フラチ");
ExpenseReportForm.addCategory("フラチ", "ハング");
ExpenseReportForm.addCategory("フラチ", "レンタカー");
ExpenseReportForm.addApplyTo("翼班");
ExpenseReportForm.addCategory("翼班", "木材");
ExpenseReportForm.addCategory("翼班", "スタイロ");
ExpenseReportForm.addCategory("翼班", "プランク");
ExpenseReportForm.addCategory("翼班", "フィルム");
ExpenseReportForm.addCategory("翼班", "消耗品");
ExpenseReportForm.addCategory("翼班", "レーザーカット");
ExpenseReportForm.addCategory("翼班", "その他");
ExpenseReportForm.addApplyTo("接合班");
ExpenseReportForm.addCategory("接合班", "かんざし");
ExpenseReportForm.addCategory("接合班", "積層");
ExpenseReportForm.addCategory("接合班", "治具");
ExpenseReportForm.addCategory("接合班", "木フラ");
ExpenseReportForm.addCategory("接合班", "工具・ボルトなど");
ExpenseReportForm.addCategory("接合班", "尾翼");
ExpenseReportForm.addCategory("接合班", "ウィングレット");
ExpenseReportForm.addCategory("接合班", "消耗品");
ExpenseReportForm.addCategory("接合班", "その他");
ExpenseReportForm.addApplyTo("コクピ班");
ExpenseReportForm.addCategory("コクピ班", "キャノピー");
ExpenseReportForm.addCategory("コクピ班", "御神体");
ExpenseReportForm.addCategory("コクピ班", "カウル");
ExpenseReportForm.addCategory("コクピ班", "フレーム");
ExpenseReportForm.addCategory("コクピ班", "ハッチ");
ExpenseReportForm.addCategory("コクピ班", "消耗品");
ExpenseReportForm.addCategory("コクピ班", "その他");
ExpenseReportForm.addApplyTo("電装班");
ExpenseReportForm.addCategory("電装班", "基板");
ExpenseReportForm.addCategory("電装班", "マイコン・IC・メモリなど");
ExpenseReportForm.addCategory("電装班", "センサーなど");
ExpenseReportForm.addCategory("電装班", "モーター・スピーカーなど");
ExpenseReportForm.addCategory("電装班", "ケーブル・コネクタなど");
ExpenseReportForm.addCategory("電装班", "LED・ディスプレイなど");
ExpenseReportForm.addCategory("電装班", "抵抗・コンデンサーなど");
ExpenseReportForm.addCategory("電装班", "電源・バッテリーなど");
ExpenseReportForm.addCategory("電装班", "筐体・構造材料など");
ExpenseReportForm.addCategory("電装班", "消耗品・固定具など");
ExpenseReportForm.addCategory("電装班", "3Dプリンタ用品など");
ExpenseReportForm.addCategory("電装班", "その他");
ExpenseReportForm.addCategory("電装班", "シミュレーター");
/////////////////////////////////////////
return ExpenseReportForm.syncData();
}
function submit (records) {
initializeData();
return ExpenseReportForm.addData(records);
}
function doGet () {
initializeData();
return ExpenseReportForm.execute();
}
```
「コード.gs」の内容を全て消去してください.

先程コピーした内容を貼り付けてください.

以下のような関数を用いて,フォームをカスタマイズできます.
- ExpenseReportForm.setTitle()
- タイトルを設定します.
- ExpenseReportForm.addApplyTo()
- 申請先(班)を追加します.
- ExpenseReportForm.addCategory()
- 項目を追加します.
以下は,鳥科では使用しません
- ExpenseReportForm.setTitleLogoUrl()
- タイトル上に表示されるロゴを設定できます.
- 無引数(カッコ内空欄)で呼び出すと,ロゴは非表示になります.
- 設定例 : `ExpenseReportForm.setTitleLogoUrl(https://lh3.googleusercontent.com/d/{画像のファイルID});`
- ExpenseReportForm.setFabiconUrl()
- ブラウザなどで表示されるファビコン(タイトルの戦闘に表示される小さなロゴ)を設定できます.
- 無引数(カッコ内空欄)で呼び出すと,ファビコンはGoogle Apps Scriptのデフォルトになります.
- 設定例 : `ExpenseReportForm.setFabiconUrl(https://drive.google.com/uc?id={画像のファイルID}&.png);`(こちらは拡張子必須です)
- ExpenseReportForm.setDefaultName();
- 申請者の名前のデフォルトを設定できます.
- ExpenseReportForm.setDefaultRetailer();
- 購入場所のデフォルトを設定できます.
- ExpenseReportForm.setDefaultPurpose();
- 購入目的のデフォルトを設定できます.
---
### 7. プロジェクトの保存
「Ctrl+S」もしくはフロッピーディスクのボタンをクリックしてください.

---
### 8. 初回デプロイ
「新しいデプロイ」をクリックしてください.

「種類の選択」の右側にある歯車マークをクリックし,「ウェブアプリ」をクリックしてください.

「新しい説明文」を設定してください.

「アクセスできるユーザー」を「全員」に変更し,「デプロイ」をクリックしてください.

「アクセスを承認」をクリックしてください.

会計用アカウントを選択してください.

「Google hasn’t verified this app」と表示される画面で,左下の「Advanced」をクリックしてください.
開いたメニューにある「Go to(設定したプロジェクト名)」(画像では「Go to マイフォーム」 )をクリックしてください.

「Allow」をクリックし,Googleアカウントへのアクセスを承認してください.

デプロイが更新されます.「ウェブアプリ」のURLからフォームにアクセスできます.「完了」を押すと閉じることができます.

フォームへアクセスするURLは「デプロイを管理」からも取得できます.

「ウェブアプリ」のURLからフォームにアクセスできます.

---
## デプロイの更新
申請先(班)や項目を追加した場合に,その変更を適用する際はデプロイを更新する必要があります.
以下の手順で,同じURLを使い続けつつ,変更を加えることができます.
---
### 0. ファイルの変更
「コード.gs」に変更を加え,プロジェクトを保存します.

---
### 1. デプロイを編集
「デプロイを管理」を開いた後,ペンのマークの「編集」をクリックします.

バージョンを「新バージョン」に,説明も違うものに変更し,「デプロイ」をクリックします.

デプロイが更新されます.「ウェブアプリ」のURLは同じですが,内容は変更されているはずです.

---