GASで経費精算フォームを効率化!MultipleChoiceItem.setRequiredで必須項目を設定
経費精算業務は、多くの企業で時間と手間がかかる作業です。特に、申請漏れや不備があると、差し戻しが発生し、さらに時間がかかってしまいます。そこで、Google Apps Script(GAS)とGoogleフォームを活用することで、経費精算フォームを効率化し、申請漏れを防ぐことができます。本記事では、GASのMultipleChoiceItem.setRequired
関数を用いて、フォームの必須項目を設定し、経費精算業務をスムーズに進める方法を解説します。
MultipleChoiceItem.setRequiredとは?
MultipleChoiceItem.setRequired(required)
は、Googleフォームのラジオボタン形式の質問項目(MultipleChoiceItem)に対して、回答を必須とするかどうかを設定するGASの関数です。引数required
には、真偽値(true
またはfalse
)を指定します。true
を指定すると必須項目となり、false
を指定すると任意項目となります。
財務・会計における利用例:経費精算フォーム
経費精算フォームにおいて、例えば「経費の種類」「日付」「金額」「摘要」などの項目は、精算処理を行う上で必須の情報です。これらの項目をMultipleChoiceItem.setRequired(true)
で設定することで、申請者が必須項目を回答せずに申請することを防ぎ、不備による差し戻しを減らすことができます。
GASによる経費精算フォームの実装
ここでは、GASを用いて経費精算フォームを作成し、必須項目を設定する具体的なコード例を紹介します。
1. フォームの作成
まず、Googleフォームで経費精算フォームを作成します。フォームの項目は、以下の通りとします。
- 経費の種類(ラジオボタン形式)
- 日付(日付形式)
- 金額(テキスト形式)
- 摘要(テキスト形式)
2. GASコード
以下のGASコードは、フォームの「経費の種類」項目を必須項目に設定する例です。
function setExpenseTypeRequired() {
// フォームIDを設定
const formId = "YOUR_FORM_ID";
// フォームを取得
const form = FormApp.openById(formId);
// フォームの項目を取得
const items = form.getItems();
// 「経費の種類」項目を探す(項目名で検索)
for (let i = 0; i < items.length; i++) {
if (items[i].getTitle() == "経費の種類") {
// 項目がラジオボタン形式かどうかを確認
if (items[i].getType() == FormApp.ItemType.MULTIPLE_CHOICE) {
// 「経費の種類」項目を必須項目に設定
items[i].asMultipleChoiceItem().setRequired(true);
break;
}
}
}
}
コードの説明:
YOUR_FORM_ID
は、作成したGoogleフォームのIDに置き換えてください。フォームIDは、フォームのURLから確認できます。form.getItems()
でフォームのすべての項目を取得します。- ループ処理で各項目をチェックし、項目名が「経費の種類」と一致し、かつラジオボタン形式(
FormApp.ItemType.MULTIPLE_CHOICE
)であるかを確認します。 items[i].asMultipleChoiceItem().setRequired(true)
で、「経費の種類」項目を必須項目に設定します。
3. 複数の必須項目設定
複数の項目を必須に設定する場合は、以下のようにコードを修正します。
function setMultipleRequired() {
// フォームIDを設定
const formId = "YOUR_FORM_ID";
// フォームを取得
const form = FormApp.openById(formId);
// フォームの項目を取得
const items = form.getItems();
// 必須項目にする項目名の配列
const requiredItems = ["経費の種類", "日付", "金額", "摘要"];
// 各項目をチェック
for (let i = 0; i < items.length; i++) {
// 項目名が必須項目リストに含まれているか確認
if (requiredItems.includes(items[i].getTitle())) {
// 項目を必須項目に設定
if (items[i].getType() == FormApp.ItemType.DATE) {
items[i].asDateItem().setRequired(true);
} else if (items[i].getType() == FormApp.ItemType.TEXT) {
items[i].asTextItem().setRequired(true);
} else if (items[i].getType() == FormApp.ItemType.MULTIPLE_CHOICE) {
items[i].asMultipleChoiceItem().setRequired(true);
}
}
}
}
コードの説明:
requiredItems
配列に、必須にしたい項目名をすべて記述します。- 項目の種類に応じて、
asDateItem()
、asTextItem()
、asMultipleChoiceItem()
などのメソッドを使用します。
よくある問題とトラブルシューティング
1. フォームIDが間違っている
FormApp.openById(formId)
でフォームを開けない場合、フォームIDが間違っている可能性があります。フォームのURLを再度確認し、正しいIDを設定してください。
2. 項目名が間違っている
items[i].getTitle()
で取得した項目名が、フォームで設定した項目名と完全に一致しているか確認してください。スペルミスや全角/半角の違いにも注意が必要です。
3. 項目タイプが異なる
asMultipleChoiceItem()
はラジオボタン形式の項目にのみ使用できます。日付形式の項目にはasDateItem()
、テキスト形式の項目にはasTextItem()
を使用してください。
カスタマイズ方法と応用例
1. 条件分岐による必須項目の切り替え
特定の条件に応じて必須項目を切り替えることも可能です。例えば、「経費の種類」が「交通費」の場合のみ、「出発地」「到着地」を必須項目にする、といった設定ができます。
function setRequiredByCondition() {
// フォームIDを設定
const formId = "YOUR_FORM_ID";
// フォームを取得
const form = FormApp.openById(formId);
// フォームの項目を取得
const items = form.getItems();
// 「経費の種類」の選択肢を取得
let expenseTypeItem = null;
for (let i = 0; i < items.length; i++) {
if (items[i].getTitle() == "経費の種類" && items[i].getType() == FormApp.ItemType.MULTIPLE_CHOICE) {
expenseTypeItem = items[i].asMultipleChoiceItem();
break;
}
}
// 「出発地」「到着地」の項目を取得
let departureItem = null;
let destinationItem = null;
for (let i = 0; i < items.length; i++) {
if (items[i].getTitle() == "出発地" && items[i].getType() == FormApp.ItemType.TEXT) {
departureItem = items[i].asTextItem();
} else if (items[i].getTitle() == "到着地" && items[i].getType() == FormApp.ItemType.TEXT) {
destinationItem = items[i].asTextItem();
}
}
// フォーム送信時のイベントをトリガーに設定
FormApp.openById(formId).setOnFormSubmit(function(e) {
// 「経費の種類」の回答を取得
const expenseType = e.response.getItemResponses()[0].getResponse();
// 「経費の種類」が「交通費」の場合のみ、「出発地」「到着地」を必須項目にする
if (expenseType == "交通費") {
departureItem.setRequired(true);
destinationItem.setRequired(true);
} else {
departureItem.setRequired(false);
destinationItem.setRequired(false);
}
});
}
2. スプレッドシートとの連携
フォームの回答をスプレッドシートに連携し、GASで集計や分析を行うことで、経費精算業務をさらに効率化できます。
まとめ
GASのMultipleChoiceItem.setRequired
関数を活用することで、Googleフォームの経費精算フォームにおける必須項目を簡単に設定できます。これにより、申請漏れを防ぎ、経費精算業務の効率化に貢献します。本記事で紹介したコード例やトラブルシューティングを参考に、ぜひGASを活用した経費精算フォームの作成に挑戦してみてください。