税務イベントを自動でGoogleカレンダーへ:AI×GASで紙から一発取り込み

『税務日程を一覧で把握したい』
『毎回、税務手帳を見るのがめんどくさい』
『Googleカレンダーにまとめて登録したい』

以前、税務手帳2026を購入しました。

2026年度の税務スケジュールを俯瞰して確認したかったからです。

主な税務のイベントが月ごとにまとまっているので、ざっと確認するには良いかなと。

しかし、紙のままでは使いづらく、Googleカレンダーに登録したいと考えていました。
実際に試した過程を書いてみます。
(最後に作ったGoogleカレンダーも共有します)

※Googleカレンダー × Gemini × GAS

目次

やりたいこと

このような紙ベースのスケジュールがあります。

これが12か月分あるため、

  • 画像からテキストを正確に抽出
  • 抽出したテキストをGoogleカレンダーに反映

といった2点を実行したいと考えました。

  • には、Gemini
  • には、GAS

を使います。

Gemini:画像をテキスト可

まずはテストとして、Geminiに画像をアップして読み取れそうか試してみます。

普段、Geminiはあまり使わないのですが、少し触ってみたかったのと、Googleカレンダーとの相性がよさそうかなと思って利用しました。

最初はこのように依頼を👇

結果は、以下のとおり(表が長いので途中まで)。

スピードも速く、精度も高めと感じました。

しかし、ここからが問題です。

同じように12か月分を読み取らせたところ、抜けや漏れがそれなりに激しくありました。
(そもそも月ごとの項目数が合わない)


褒めても、まだまだ誤りは多い状態ではありました。苦笑

『何回繰り返すんだよ…』という気持ちになりますが、指摘をすることで徐々に精度は上がってきます。

最終的には正確に抽出はできたかなと、
(全件確認は難しいので、サンプルチェックしたのみではありますが)

GAS:テキストをGoogleカレンダーに記載

次に、抽出したテキストをGoogleカレンダーに落とし込みます。

直接カレンダーを作れるかなと思ったのですが、そういった機能はないようです。

最初の提案は『コピペしてね!』でした…。
(それはキツイ…)

こちらから『GASでなんとかならない?』と聞いて、できそうとのことでコードの大枠を作ってもらいました。

コード自体は長めなので、ご興味あれば以下からご覧ください。

GASスクリプト
function registerTaxDeadlines2026() {
  // ----------------------------------------------------
  // 1. 登録先カレンダーIDを設定
  // ----------------------------------------------------
  const CALENDAR_ID = "9288645b942834328974f7fa3f6639470aa289cea6eca0cb5892e79f25be8751@group.calendar.google.com";
  const targetCalendar = CalendarApp.getCalendarById(CALENDAR_ID);

  if (!targetCalendar) {
    // UI関数を使用せず、ログでエラーを出力
    Logger.log("❌ エラー: 指定されたカレンダーIDが見つかりません: " + CALENDAR_ID);
    return;
  }

  // ----------------------------------------------------
  // 2. 登録する全87件のイベントデータ (2026年版)
  // ----------------------------------------------------
  const events = [
    // --- 1月 (13件) ---
    {title: "1月 No.1:給与所得者の扶養控除等申告書の提出", date: "2026-01-01", description: "【仮定】本年最初の給与支払日の前日として設定"},
    {title: "1月 No.2:前年12月分源泉所得税・住民税の特別徴収税額の納付 (1/13)", date: "2026-01-13"},
    {title: "1月 No.3:支払調書の提出", date: "2026-02-02", description: "【期限】本来1/31。休日のため2/2"},
    {title: "1月 No.4:源泉徴収票の交付", date: "2026-02-02", description: "【期限】本来1/31。休日のため2/2"},
    {title: "1月 No.5:固定資産税の償却資産に関する申告", date: "2026-02-02", description: "【期限】本来1/31。休日のため2/2"},
    {title: "1月 No.6:給与支払報告書の提出", date: "2026-02-02", description: "【期限】本来1/31。休日のため2/2"},
    {title: "1月 No.7:11月決算法人の確定申告 (法人税・消費税等)", date: "2026-02-02", description: "【期限】本来1/31。休日のため2/2"},
    {title: "1月 No.8:5月決算法人の中間申告(半期分)", date: "2026-02-02", description: "【期限】本来1/31。休日のため2/2"},
    {title: "1月 No.9:2,5,8,11月決算法人の3月ごとの期間短縮に係る確定申告", date: "2026-02-02", description: "【期限】本来1/31。休日のため2/2"},
    {title: "1月 No.10:法人・個人事業者の1月ごとの期間短縮に係る確定申告", date: "2026-02-02", description: "【期限】本来1/31。休日のため2/2"},
    {title: "1月 No.11:消費税年税額400万円超の2,5,8月決算法人の3月ごとの中間申告", date: "2026-02-02", description: "【期限】本来1/31。休日のため2/2"},
    {title: "1月 No.12:消費税年税額4,800万円超の1月ごとの中間申告", date: "2026-02-02", description: "【期限】本来1/31。休日のため2/2"},
    {title: "1月 No.13:個人の道府県民税及び市町村民税の納付(第4期分)", date: "2026-01-31", description: "【仮定】月末日として設定(市町村の条例で定める日)"},

    // --- 2月 (11件) ---
    {title: "2月 No.1:前年分贈与税の申告 (申告期間開始)", date: "2026-02-02", description: "申告期間: 2/2〜3/16"},
    {title: "2月 No.2:1月分源泉所得税・住民税の特別徴収税額の納付", date: "2026-02-10"},
    {title: "2月 No.3:前年分所得税の確定申告 (申告期間開始)", date: "2026-02-16", description: "申告期間: 2/16〜3/16"},
    {title: "2月 No.4:12月決算法人の確定申告 (法人税・消費税等)", date: "2026-03-02", description: "【期限】本来2/28。休日のため3/2"},
    {title: "2月 No.5:6月決算法人の中間申告(半期分)", date: "2026-03-02", description: "【期限】本来2/28。休日のため3/2"},
    {title: "2月 No.6:3,6,9,12月決算法人の3月ごとの期間短縮に係る確定申告", date: "2026-03-02", description: "【期限】本来2/28。休日のため3/2"},
    {title: "2月 No.7:法人・個人事業者の1月ごとの期間短縮に係る確定申告", date: "2026-03-02", description: "【期限】本来2/28。休日のため3/2"},
    {title: "2月 No.8:消費税年税額400万円超の3,6,9月決算法人の3月ごとの中間申告", date: "2026-03-02", description: "【期限】本来2/28。休日のため3/2"},
    {title: "2月 No.9:消費税年税額4,800万円超の1月ごとの中間申告", date: "2026-03-02", description: "【期限】本来2/28。休日のため3/2"},
    {title: "2月 No.10:固定資産税(都市計画税)の第4期分の納付", date: "2026-02-28", description: "【仮定】月末日として設定(市町村の条例で定める日)"},
    {title: "2月 No.11:税理士記念日", date: "2026-02-23"},

    // --- 3月 (15件) ---
    {title: "3月 No.1:2月分源泉所得税・住民税の特別徴収税額の納付", date: "2026-03-10"},
    {title: "3月 No.2:前年分所得税・贈与税の確定申告(申告・納付期限)", date: "2026-03-16"},
    {title: "3月 No.3:所得税確定損失申告書の提出", date: "2026-03-16"},
    {title: "3月 No.4:所得税の総収入金額報告書の提出", date: "2026-03-16"},
    {title: "3月 No.5:確定申告税額の延納の届出書の提出", date: "2026-03-16"},
    {title: "3月 No.6:個人の道府県民税・市町村民税・事業税(事業所税)の申告", date: "2026-03-16"},
    {title: "3月 No.7:個人の青色申告の承認申請", date: "2026-03-31", description: "新規事業開始は業務開始日から2か月以内。3/31は通常の提出期限"},
    {title: "3月 No.8:個人事業者の前年分消費税・地方消費税の確定申告", date: "2026-03-31"},
    {title: "3月 No.9:1月決算法人の確定申告 (法人税・消費税等)", date: "2026-03-31"},
    {title: "3月 No.10:7月決算法人の中間申告(半期分)", date: "2026-03-31"},
    {title: "3月 No.11:1,4,7,10月決算法人・個人事業者の3月ごとの期間短縮に係る確定申告", date: "2026-03-31"},
    {title: "3月 No.12:法人・個人事業者の1月ごとの期間短縮に係る確定申告", date: "2026-03-31"},
    {title: "3月 No.13:消費税年税額400万円超の4,7,10月決算法人の3月ごとの中間申告", date: "2026-03-31"},
    {title: "3月 No.14:消費税年税額4,800万円超の1月ごとの中間申告", date: "2026-03-31"},
    {title: "3月 No.15:個人の道府県民税及び市町村民税の納付", date: "2026-03-31"},

    // --- 4月 (13件) ---
    {title: "4月 No.1:3月分源泉所得税・住民税の特別徴収税額の納付", date: "2026-04-10"},
    {title: "4月 No.2:給与支払報告に係る給与所得者異動届出", date: "2026-04-15"},
    {title: "4月 No.3:公共法人等の道府県民税及び市町村民税均等の申告", date: "2026-04-30"},
    {title: "4月 No.4:2月決算法人の確定申告 (法人税・消費税等)", date: "2026-04-30"},
    {title: "4月 No.5:2,5,8,11月決算法人の3月ごとの期間短縮に係る確定申告", date: "2026-04-30"},
    {title: "4月 No.6:法人・個人事業者の1月ごとの期間短縮に係る確定申告", date: "2026-04-30"},
    {title: "4月 No.7:8月決算法人の中間申告(半期分)", date: "2026-04-30"},
    {title: "4月 No.8:消費税年税額400万円超の5,8,11月決算法人の3月ごとの中間申告", date: "2026-04-30"},
    {title: "4月 No.9:消費税年税額4,800万円超の1月ごとの中間申告", date: "2026-04-30"},
    {title: "4月 No.10:軽自動車税(種別割)の納付", date: "2026-04-30", description: "【仮定】月末日として設定(市町村の条例で定める日)"},
    {title: "4月 No.11:固定資産税(都市計画税)の第1期分の納付", date: "2026-04-30", description: "【仮定】月末日として設定"},
    {title: "4月 No.12:固定資産課税台帳の縦覧期間", date: "2026-04-01", description: "【期間】4月1日から。期間開始日を設定"},
    {title: "4月 No.13:固定資産課税台帳への登録価格の審査の申出", date: "2026-04-01", description: "【期間】4月1日から。期間開始日を設定"},

    // --- 5月 (12件) ---
    {title: "5月 No.1:4月分源泉所得税・住民税の特別徴収税額の納付", date: "2026-05-11", description: "【期限】本来5/10。休日のため5/11"},
    {title: "5月 No.2:特別農業所得者の承認申請", date: "2026-05-15"},
    {title: "5月 No.3:個人の道府県民税及び市町村民税の特別徴収税額の通知", date: "2026-06-01", description: "【期限】本来5/31。休日のため6/1"},
    {title: "5月 No.4:3月決算法人の確定申告 (法人税・消費税等)", date: "2026-06-01", description: "【期限】本来5/31。休日のため6/1"},
    {title: "5月 No.5:3,6,9,12月決算法人・個人事業者の3月ごとの期間短縮に係る確定申告", date: "2026-06-01", description: "【期限】本来5/31。休日のため6/1"},
    {title: "5月 No.6:法人・個人事業者の1月ごとの期間短縮に係る確定申告", date: "2026-06-01", description: "【期限】本来5/31。休日のため6/1"},
    {title: "5月 No.7:9月決算法人の中間申告(半期分)", date: "2026-06-01", description: "【期限】本来5/31。休日のため6/1"},
    {title: "5月 No.8:消費税年税額400万円超の6,9,12月決算法人の3月ごとの中間申告", date: "2026-06-01", description: "【期限】本来5/31。休日のため6/1"},
    {title: "5月 No.9:消費税年税額4,800万円超の1月ごとの中間申告", date: "2026-06-01", description: "【期限】本来5/31。休日のため6/1"},
    {title: "5月 No.10:確定申告税額の延納届出に係る延納税額の納付", date: "2026-06-01", description: "【期限】本来5/31。休日のため6/1"},
    {title: "5月 No.11:自動車税(種別割)の納付", date: "2026-06-01", description: "【仮定】5月中の納付。休日のため6/1を設定"},
    {title: "5月 No.12:鉱区税の納付", date: "2026-06-01", description: "【仮定】5月中の納付。休日のため6/1を設定"},

    // --- 6月 (10件) ---
    {title: "6月 No.1:5月分源泉所得税・住民税の特別徴収税額等の納付", date: "2026-06-10"},
    {title: "6月 No.2:所得税の予定納税額の通知", date: "2026-06-15"},
    {title: "6月 No.3:国外財産調書・財産債務調書の提出", date: "2026-06-30"},
    {title: "6月 No.4:4月決算法人の確定申告 (法人税・消費税等)", date: "2026-06-30"},
    {title: "6月 No.5:10月決算法人の中間申告(半期分)", date: "2026-06-30"},
    {title: "6月 No.6:4,7,10,1月決算法人の3月ごとの期間短縮に係る確定申告", date: "2026-06-30"},
    {title: "6月 No.7:法人・個人事業者の1月ごとの期間短縮に係る確定申告", date: "2026-06-30"},
    {title: "6月 No.8:消費税年税額400万円超の7,10,1月決算法人の3月ごとの中間申告", date: "2026-06-30"},
    {title: "6月 No.9:消費税年税額4,800万円超の1月ごとの中間申告", date: "2026-06-30"},
    {title: "6月 No.10:個人の道府県民税及び市町村民税の納付(第1期分)", date: "2026-06-30", description: "【仮定】月末日として設定(市町村の条例で定める日)"},

    // --- 7月 (10件) ---
    {title: "7月 No.1:6月分源泉所得税・住民税の特別徴収税額の納付", date: "2026-07-10"},
    {title: "7月 No.2:所得税の予定納税額の減額申請", date: "2026-07-15"},
    {title: "7月 No.3:所得税の予定納税額の納付(第1期分)", date: "2026-07-31"},
    {title: "7月 No.4:5月決算法人の確定申告 (法人税・消費税等)", date: "2026-07-31"},
    {title: "7月 No.5:11月決算法人の中間申告(半期分)", date: "2026-07-31"},
    {title: "7月 No.6:5,8,11,2月決算法人の3月ごとの期間短縮に係る確定申告", date: "2026-07-31"},
    {title: "7月 No.7:法人・個人事業者の1月ごとの期間短縮に係る確定申告", date: "2026-07-31"},
    {title: "7月 No.8:消費税年税額400万円超の8,11,2月決算法人の3月ごとの中間申告", date: "2026-07-31"},
    {title: "7月 No.9:消費税年税額4,800万円超の1月ごとの中間申告", date: "2026-07-31"},
    {title: "7月 No.10:固定資産税(都市計画税)の第2期分の納付", date: "2026-07-31", description: "【仮定】月末日として設定(市町村の条例で定める日)"},

    // --- 8月 (10件) ---
    {title: "8月 No.1:7月分源泉所得税・住民税の特別徴収税額の納付", date: "2026-08-10"},
    {title: "8月 No.2:6月決算法人の確定申告 (法人税・消費税等)", date: "2026-08-31"},
    {title: "8月 No.3:12月決算法人の中間申告(半期分)", date: "2026-08-31"},
    {title: "8月 No.4:個人事業者の消費税・地方消費税の中間申告", date: "2026-08-31"},
    {title: "8月 No.5:6,9,12,3月決算法人の3月ごとの期間短縮に係る確定申告", date: "2026-08-31"},
    {title: "8月 No.6:法人・個人事業者の1月ごとの期間短縮に係る確定申告", date: "2026-08-31"},
    {title: "8月 No.7:消費税年税額400万円超の9,12,3月決算法人の3月ごとの中間申告", date: "2026-08-31"},
    {title: "8月 No.8:消費税年税額4,800万円超の1月ごとの中間申告", date: "2026-08-31"},
    {title: "8月 No.9:個人事業税の納付(第1期分)", date: "2026-08-31", description: "【仮定】月末日として設定(都道府県の条例で定める日)"},
    {title: "8月 No.10:個人の道府県民税及び市町村民税の納付(第2期分)", date: "2026-08-31", description: "【仮定】月末日として設定(市町村の条例で定める日)"},

    // --- 9月 (7件) ---
    {title: "9月 No.1:8月分源泉所得税・住民税の特別徴収税額の納付", date: "2026-09-10"},
    {title: "9月 No.2:7月決算法人の確定申告 (法人税・消費税等)", date: "2026-09-30"},
    {title: "9月 No.3:1月決算法人の中間申告(半期分)", date: "2026-09-30"},
    {title: "9月 No.4:7,10,1,4月決算法人の3月ごとの期間短縮に係る確定申告", date: "2026-09-30"},
    {title: "9月 No.5:法人・個人事業者の1月ごとの期間短縮に係る確定申告", date: "2026-09-30"},
    {title: "9月 No.6:消費税年税額400万円超の10,1,4月決算法人の3月ごとの中間申告", date: "2026-09-30"},
    {title: "9月 No.7:消費税年税額4,800万円超の1月ごとの中間申告", date: "2026-09-30"},

    // --- 10月 (9件) ---
    {title: "10月 No.1:9月分源泉所得税・住民税の特別徴収税額の納付", date: "2026-10-13", description: "【期限】本来10/10。休日のため10/13"},
    {title: "10月 No.2:特別農業所得者への予定納税基準額等の通知", date: "2026-10-15"},
    {title: "10月 No.3:8月決算法人の確定申告 (法人税・消費税等)", date: "2026-11-02", description: "【期限】本来10/31。休日のため11/2"},
    {title: "10月 No.4:2月決算法人の中間申告(半期分)", date: "2026-11-02", description: "【期限】本来10/31。休日のため11/2"},
    {title: "10月 No.5:8,11,2,5月決算法人の3月ごとの期間短縮に係る確定申告", date: "2026-11-02", description: "【期限】本来10/31。休日のため11/2"},
    {title: "10月 No.6:法人・個人事業者の1月ごとの期間短縮に係る確定申告", date: "2026-11-02", description: "【期限】本来10/31。休日のため11/2"},
    {title: "10月 No.7:消費税年税額400万円超の11,2,5月決算法人の3月ごとの中間申告", date: "2026-11-02", description: "【期限】本来10/31。休日のため11/2"},
    {title: "10月 No.8:消費税年税額4,800万円超の1月ごとの中間申告", date: "2026-11-02", description: "【期限】本来10/31。休日のため11/2"},
    {title: "10月 No.9:個人の道府県民税及び市町村民税の納付(第3期分)", date: "2026-11-02", description: "【仮定】10月中の納付。休日のため11/2を設定"},

    // --- 11月 (11件) ---
    {title: "11月 No.1:10月分源泉所得税・住民税の特別徴収税額の納付", date: "2026-11-10"},
    {title: "11月 No.2:所得税の予定納税額の減額申請", date: "2026-11-16"},
    {title: "11月 No.3:所得税の予定納税額の納付(第2期分)", date: "2026-11-30"},
    {title: "11月 No.4:特別農業所得者への所得税の予定納税額の納付", date: "2026-11-30"},
    {title: "11月 No.5:9月決算法人の確定申告 (法人税・消費税等)", date: "2026-11-30"},
    {title: "11月 No.6:3月決算法人の中間申告(半期分)", date: "2026-11-30"},
    {title: "11月 No.7:9,12,3,6月決算法人の3月ごとの期間短縮に係る確定申告", date: "2026-11-30"},
    {title: "11月 No.8:法人・個人事業者の1月ごとの期間短縮に係る確定申告", date: "2026-11-30"},
    {title: "11月 No.9:消費税年税額400万円超の12,3,6月決算法人の3月ごとの中間申告", date: "2026-11-30"},
    {title: "11月 No.10:消費税年税額4,800万円超の1月ごとの中間申告", date: "2026-11-30"},
    {title: "11月 No.11:個人事業税の納付(第2期分)", date: "2026-11-30", description: "【仮定】月末日として設定(都道府県の条例で定める日)"},

    // --- 12月 (10件) ---
    {title: "12月 No.1:11月分源泉所得税・住民税の特別徴収税額等の納付", date: "2026-12-10"},
    {title: "12月 No.2:給与所得の年末調整", date: "2026-12-31", description: "【仮定】本年最後の給与の支払をするときとして設定"},
    {title: "12月 No.3:年末調整関連の書類提出", date: "2026-12-30", description: "【仮定】本年最後の給与の支払を受ける日の前日として設定"},
    {title: "12月 No.4:10月決算法人の確定申告 (法人税・消費税等)", date: "2027-01-04", description: "【期限】本来12/31。休日のため翌年1/4"},
    {title: "12月 No.5:4月決算法人の中間申告(半期分)", date: "2027-01-04", description: "【期限】本来12/31。休日のため翌年1/4"},
    {title: "12月 No.6:10,1,4,7月決算法人の3月ごとの期間短縮に係る確定申告", date: "2027-01-04", description: "【期限】本来12/31。休日のため翌年1/4"},
    {title: "12月 No.7:法人・個人事業者の1月ごとの期間短縮に係る確定申告", date: "2027-01-04", description: "【期限】本来12/31。休日のため翌年1/4"},
    {title: "12月 No.8:消費税年税額400万円超の1,4,7月決算法人の3月ごとの中間申告", date: "2027-01-04", description: "【期限】本来12/31。休日のため翌年1/4"},
    {title: "12月 No.9:消費税年税額4,800万円超の1月ごとの中間申告", date: "2027-01-04", description: "【期限】本来12/31。休日のため翌年1/4"},
    {title: "12月 No.10:固定資産税(都市計画税)の第3期分の納付", date: "2026-12-31", description: "【仮定】月末日として設定(市町村の条例で定める日)"}
  ];

  // ----------------------------------------------------
  // 3. イベントの作成
  // ----------------------------------------------------
  let createdCount = 0;
  let errorEvents = [];
  events.forEach(eventData => {
    try {
      // 日付文字列をDateオブジェクトに変換 (終日イベントとして処理)
      const date = new Date(eventData.date);
      
      // 終日イベントを作成
      targetCalendar.createAllDayEvent(
        eventData.title,
        date,
        {description: eventData.description || "税務上の申告・納付期限です。"}
      );
      createdCount++;
    } catch (e) {
      Logger.log("❌ 失敗したイベント: " + eventData.title + ", エラー詳細: " + e.toString());
      errorEvents.push(eventData.title);
    }
  });

  // ----------------------------------------------------
  // 4. 完了メッセージ (Logger.logでのみ出力)
  // ----------------------------------------------------
  if (createdCount === events.length) {
    Logger.log(`✅ 完了: 全${createdCount}件の2026年税務イベントをカレンダーに登録しました。`);
  } else {
    Logger.log(`⚠️ 警告: 全${events.length}件のうち、${createdCount}件のイベントを登録しました。`);
    Logger.log(`詳細: 登録に失敗したイベントは ${errorEvents.length} 件です。`);
    Logger.log("失敗したイベントリスト: " + errorEvents.join(' | '));
  }
}

実行手順としては、以下のとおりです。

手順
  • Google Driveから「新規」→「その他」→「Google Apps Script」を選択し、エディタを開く。
  • 既存のコード(function myFunction() { … }など)をすべて削除し、上記のコード全体を貼り付ける。
  • コードを保存し、エディタ上部の「実行」ボタン(▶️)を押す。
  • 初回実行時に「権限の承認」を求められるので、アクセスを許可する。
  • 実行が完了すると、指定されたカレンダーの2026年税務イベントが一括で登録される。

以上を踏まえ、出来上がったカレンダーは下記リンク先のもの。

   Googleカレンダー(TaxEvent)

概ね想定した形で、Googleカレンダーを作成することができました。

これにかかった時間は、写真撮影等をすべて含めて27分(見積24分なので3分オーバー)でした。

AIやプログラミングを組み合わせると、手間をかけずにそれなりのものを作れます。
以上、参考になる点があれば幸いです。

では、また次回。

編集後記

◇日記
 昨日はブログ執筆から。
 体調も少しずつ戻って来ました。
 設立した法人の社会保険手続きで一部不備があったようで、再度の申請。
 経理チェック、講義収録等もできる範囲で。

◇ブログネタ経緯
 以前から考えていたものを実行し、ネタにも。

◇1日1新
 Geminiで画像取り込み

◇今日の一冊
 ランチェスター弱者必勝の戦略(続き)

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

●1990年4月生まれ。東京都出身。
●『時間とお金』『家庭と仕事』『思考と行動』の悩みをサポート。
●IT、発信、営業、会計、税金に強みを持つ。
●公認会計士。
●3児(みんな男の子)の父。

目次