FormApp.createTextValidationで経費精算を効率化!GASで承認フローを自動化
経費精算業務は、多くの企業で煩雑になりがちな業務の一つです。申請書の作成、承認、チェックなど、多くの手間と時間がかかります。特に、申請内容の不備や入力ミスがあると、差し戻しが発生し、さらに業務効率が低下してしまいます。
本記事では、Google Apps Script(GAS)のFormApp.createTextValidation
関数を活用して、経費精算フォームの入力規則を強化し、申請ミスの削減と承認フローの自動化を実現する方法を解説します。財務・会計担当者の業務効率化に貢献できる、実用的なコード例とカスタマイズ方法を紹介します。
FormApp.createTextValidationとは?
FormApp.createTextValidation
は、Googleフォームのテキスト入力欄に、特定の条件を満たす値のみを受け付けるように設定できる関数です。例えば、数値のみ入力可能にする、特定の文字列を含む必要がある、特定の範囲の文字数に制限するなど、様々なバリデーションルールを設定できます。
これにより、申請者は正しい形式で情報を入力する必要があり、入力ミスによる差し戻しを減らすことができます。また、入力されたデータは自動的に検証されるため、チェック作業の負担も軽減されます。
経費精算業務における課題
経費精算業務では、以下のような課題がよく見られます。
- 申請書の形式が統一されておらず、必要な情報が不足している。
- 手入力によるミスが多く、金額や日付の入力誤りが頻発する。
- 承認フローが煩雑で、申請から承認までに時間がかかる。
- 過去の申請データとの照合に手間がかかる。
これらの課題を解決するために、FormApp.createTextValidation
を活用した経費精算フォームの改善が有効です。
実装方法:GASで経費精算フォームを自動化
ここでは、GASを使って経費精算フォームを作成し、FormApp.createTextValidation
で入力規則を設定する具体的な手順を説明します。
1. Googleフォームの作成
まず、Googleフォームで経費精算に必要な項目(日付、金額、用途、摘要など)を設定します。
2. GASエディタを開く
Googleフォームの編集画面から「スクリプトエディタ」を開き、GASのコードを記述します。
3. コードの記述
以下のコード例を参考に、FormApp.createTextValidation
を使って入力規則を設定します。
// フォームのID
const formId = "YOUR_FORM_ID";
function setValidationRules() {
const form = FormApp.openById(formId);
const items = form.getItems();
// 金額の入力欄に数値のみ許可するバリデーションを設定
const amountItem = items.find(item => item.getTitle() === "金額");
if (amountItem && amountItem.getType() === FormApp.ItemType.TEXT) {
const textItem = amountItem.asTextItem();
const validation = FormApp.createTextValidation()
.setHelpText("半角数字で入力してください")
.requireNumber()
.build();
textItem.setValidation(validation);
}
// 日付の入力欄に日付形式を許可するバリデーションを設定
const dateItem = items.find(item => item.getTitle() === "日付");
if (dateItem && dateItem.getType() === FormApp.ItemType.DATE) {
//日付Itemの場合setDateValidationを使用する。
}
// 摘要の入力欄に最大文字数を設定するバリデーションを設定
const descriptionItem = items.find(item => item.getTitle() === "摘要");
if (descriptionItem && descriptionItem.getType() === FormApp.ItemType.TEXT) {
const textItem = descriptionItem.asTextItem();
const validation = FormApp.createTextValidation()
.setHelpText("200文字以内で入力してください")
.requireTextLength(0, 200)
.build();
textItem.setValidation(validation);
}
}
コードの説明:
YOUR_FORM_ID
には、実際に作成したGoogleフォームのIDを入力してください。items.find(item => item.getTitle() === "金額")
で、フォーム内の「金額」というタイトルの項目を取得します。FormApp.createTextValidation()
でバリデーションルールを作成します。requireNumber()
で数値のみ許可するルールを設定します。requireTextLength(0, 200)
で0文字以上200文字以下の文字数制限を設定します。setHelpText()
で、入力ミスがあった場合に表示するヘルプテキストを設定します。textItem.setValidation(validation)
で、作成したバリデーションルールを項目に適用します。
4. トリガーの設定
GASエディタの「トリガー」を設定し、フォームが送信されたときにsetValidationRules()
関数が実行されるようにします。これにより、フォームが送信されるたびに入力規則が適用されます。
実用的なコード例
例1:請求書番号の形式チェック
請求書番号が特定の形式(例:INV-2024-001)に従っているかチェックする例です。
function setInvoiceNumberValidation() {
const form = FormApp.openById(formId);
const items = form.getItems();
const invoiceNumberItem = items.find(item => item.getTitle() === "請求書番号");
if (invoiceNumberItem && invoiceNumberItem.getType() === FormApp.ItemType.TEXT) {
const textItem = invoiceNumberItem.asTextItem();
const validation = FormApp.createTextValidation()
.setHelpText("請求書番号はINV-YYYY-NNNの形式で入力してください(例:INV-2024-001)")
.requireTextMatchesPattern("^INV-\d{4}-\d{3}$")
.build();
textItem.setValidation(validation);
}
}
解説:
requireTextMatchesPattern("^INV-\d{4}-\d{3}$")
で、正規表現を使って請求書番号の形式をチェックします。^INV-\d{4}-\d{3}$
は、INV-YYYY-NNN(YYYYは4桁の数字、NNNは3桁の数字)という形式を表す正規表現です。
例2:金額の上限設定
経費申請金額が一定の上限を超えないように設定する例です。
function setAmountLimitValidation() {
const form = FormApp.openById(formId);
const items = form.getItems();
const amountItem = items.find(item => item.getTitle() === "金額");
if (amountItem && amountItem.getType() === FormApp.ItemType.TEXT) {
const textItem = amountItem.asTextItem();
const validation = FormApp.createTextValidation()
.setHelpText("金額は10,000円以下で入力してください")
.requireNumberBetween(0, 10000)
.build();
textItem.setValidation(validation);
}
}
解説:
requireNumberBetween(0, 10000)
で、金額が0円以上10,000円以下であることをチェックします。
よくある問題とトラブルシューティング
問題1:バリデーションが機能しない
原因:
- フォームIDが間違っている。
- 項目のタイトルがコードと一致していない。
- トリガーが正しく設定されていない。
解決策:
- フォームIDを再度確認し、正確に入力してください。
- 項目のタイトルとコード内の
item.getTitle()
が一致しているか確認してください。 - トリガーが正しく設定されているか確認し、必要に応じて再設定してください。
問題2:正規表現がうまく動作しない
原因:
- 正規表現の記述が間違っている。
- 入力値が正規表現に合致しない。
解決策:
- 正規表現の記述を再度確認し、正しい形式で記述してください。
- 入力値が正規表現に合致しているか確認してください。
カスタマイズ方法と応用例
1. 条件分岐によるバリデーション
特定の条件に基づいてバリデーションルールを変更することができます。例えば、特定の部署からの申請の場合のみ、金額の上限を高く設定するなどが可能です。
function setConditionalValidation() {
const form = FormApp.openById(formId);
const items = form.getItems();
const departmentItem = items.find(item => item.getTitle() === "部署");
const amountItem = items.find(item => item.getTitle() === "金額");
if (departmentItem && departmentItem.getType() === FormApp.ItemType.TEXT && amountItem && amountItem.getType() === FormApp.ItemType.TEXT) {
const department = departmentItem.asTextItem().getValue();
const amountTextItem = amountItem.asTextItem();
let validationBuilder = FormApp.createTextValidation().setHelpText("半角数字で入力してください");
if (department === "営業部") {
validationBuilder = validationBuilder.requireNumberBetween(0, 50000);
} else {
validationBuilder = validationBuilder.requireNumberBetween(0, 10000);
}
amountTextItem.setValidation(validationBuilder.build());
}
}
2. リアルタイムバリデーション
フォームの入力中にリアルタイムでバリデーションを行うことで、ユーザーエクスペリエンスを向上させることができます。これには、onChange
イベントを利用したGASのWebアプリケーションを作成する必要があります。
まとめ
FormApp.createTextValidation
を活用することで、経費精算フォームの入力規則を強化し、申請ミスの削減と承認フローの自動化を実現できます。本記事で紹介したコード例やトラブルシューティングを参考に、ぜひ貴社の経費精算業務の効率化に取り組んでみてください。
GASを活用することで、経費精算業務だけでなく、様々な業務の自動化や効率化が可能です。ぜひGASの可能性を追求し、よりスマートな働き方を実現してください。
CodeCampは、現役エンジニアからマンツーマンで学べるオンラインプログラミングスクールです。WebデザインやWebサービス開発、転職支援など、目的に合わせた多様なコースが選べます。
朝7時〜夜23時40分まで、365日レッスンが受けられるため、忙しい方でも自分のペースで学習を進めることが可能です。通過率8%の厳しい選考を通過した質の高い講師陣が、あなたのキャリアチェンジを強力にサポートします。
さらに、未経験者向けのカリキュラムや、学習開始から20日以内の全額返金保証制度もあるため、プログラミング学習に不安を感じている方でも安心して始めることができます。
CodeCampで理想の働き方を実現しよう