Skip to content

00kenno/Expense_Report_Form

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

68 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

経費精算申請フォーム

デモページはこちら↓ https://script.google.com/macros/s/AKfycbzcfYVeeMSKhGk_sj8BYYwdl7ZLyvZTAJPf8Hb-x7IEZlEONKxFN-62XeHpFv2fPIF1cg/exec

概要

  • 東京理科大学鳥人間サークル鳥科で使用する,経費精算申請フォームの生成ライブラリです.
  • Googleスプレッドシートと直接接続し,フォームから送信されたデータを安全に記録します.
  • 複数項目の送信,税率計算,申請先や購入場所の個別設定などに対応しています.
  • 何かあれば制作者にXのDMやメール([email protected])などで連絡してください.

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は以下でコピーできます.)

スクリプトID1lqOvEXcBEAAfzkD4aZGJjShQuhE7bcA3JlCZrCoaVzm-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は同じですが,内容は変更されているはずです.


About

Google Apps Script による経費精算申請フォーム

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published