GASで月ごとのタスク自動化!Date.getMonth()を活用した定期実行スクリプト

GASで月ごとのタスク自動化!Date.getMonth()を活用した定期実行スクリプト

本記事では、Google Apps Script(GAS)のDate.getMonth()関数を利用して、月ごとのタスクを自動化する方法を解説します。特に、定期的なメール送信やファイル操作など、ビジネスにおける自動化処理に焦点を当て、実用的なコード例を多数紹介します。

Date.getMonth()関数の基本

Date.getMonth()は、日付オブジェクトから月を取得するJavaScriptの組み込み関数です。GASでも同様に使用できます。戻り値は0から11の整数で、0が1月、1が2月、11が12月を表します。

// 今日の日付オブジェクトを作成
const today = new Date();
// 月を取得(0-11)
const month = today.getMonth();
console.log(month);

利用シチュエーション:月次レポートの自動送信

多くの企業では、月次レポートの作成と送信が定期的に行われています。この作業をGASで自動化することで、人的コストを削減し、業務効率を向上させることができます。

実装方法

以下の手順で、月次レポートの自動送信スクリプトを作成します。

  1. スプレッドシートからデータを取得
  2. レポートを作成(例:Googleドキュメント)
  3. メールで送信

実用的なコード例

function sendMonthlyReport() {
// 現在の月を取得(0-11)
const month = new Date().getMonth();
// 月の名前を配列で定義
const monthNames = ["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"];
// 今月の名前を取得
const monthName = monthNames[month];

// スプレッドシートIDとシート名
const spreadsheetId = "YOUR_SPREADSHEET_ID";
const sheetName = "データ";

// スプレッドシートを開く
const ss = SpreadsheetApp.openById(spreadsheetId);
const sheet = ss.getSheetByName(sheetName);

// データを取得(例:A1から最終行まで)
const data = sheet.getDataRange().getValues();

// レポート内容を作成(ここでは簡単なテキスト形式)
let reportText = monthName + "の月次レポート\n\n";
for (let i = 0; i < data.length; i++) {
reportText += data[i].join(", ") + "\n";
}

// 送信先メールアドレス
const recipient = "your_email@example.com";
// 件名
const subject = monthName + "月次レポート";
// 本文
const body = reportText;

// メールを送信
MailApp.sendEmail(recipient, subject, body);

Logger.log("月次レポートを送信しました: " + monthName);
}

コード解説:

  • new Date().getMonth()で現在の月を取得します。
  • monthNames配列を使って、月の数値を対応する月の名前に変換します。
  • SpreadsheetApp.openById()getSheetByName()でスプレッドシートとシートを開きます。
  • getDataRange().getValues()でシートのデータを取得します。
  • 取得したデータをもとにレポート内容を作成します。
  • MailApp.sendEmail()でメールを送信します。

定期実行設定

このスクリプトをトリガーで定期実行するように設定します。GASエディタの「トリガー」アイコンをクリックし、「トリガーを追加」を選択します。時間主導型トリガーを選択し、「毎月」を選択、実行する時間と日付を設定します。

よくある問題とトラブルシューティング

  • メールが送信されない:MailAppサービスが承認されているか確認してください。また、送信先メールアドレスが正しいか確認してください。
  • データが正しく取得されない:スプレッドシートIDとシート名が正しいか確認してください。また、データ範囲が適切に設定されているか確認してください。
  • getMonth()が意図しない値を返す:JavaScriptのgetMonth()は0から11の値を返すため、月の名前を取得する際には注意が必要です。

カスタマイズ方法と応用例

  • レポート形式のカスタマイズ:レポートの内容をHTML形式で作成し、より見やすいレポートを作成できます。
  • ファイル添付:作成したレポートをPDFファイルとして添付して送信できます。
  • 条件分岐:Date.getMonth()を使って、特定の月だけ実行する処理を実装できます。例えば、年末調整関連の処理を12月だけ実行するように設定できます。

function sendSpecificMonthReport() {
const month = new Date().getMonth();
// 12月(11)の場合のみ実行
if (month === 11) {
// 年末調整関連の処理
Logger.log("年末調整レポートを送信します");
}
}

まとめ

Date.getMonth()関数とGASを組み合わせることで、月ごとのタスクを効率的に自動化できます。本記事で紹介したコード例を参考に、ぜひご自身の業務に合わせた自動化スクリプトを作成してみてください。

PR

CodeCampは、現役エンジニアからマンツーマンで学べるオンラインプログラミングスクールです。WebデザインやWebサービス開発、転職支援など、目的に合わせた多様なコースが選べます。
朝7時〜夜23時40分まで、365日レッスンが受けられるため、忙しい方でも自分のペースで学習を進めることが可能です。通過率8%の厳しい選考を通過した質の高い講師陣が、あなたのキャリアチェンジを強力にサポートします。
さらに、未経験者向けのカリキュラムや、学習開始から20日以内の全額返金保証制度もあるため、プログラミング学習に不安を感じている方でも安心して始めることができます。

CodeCampで理想の働き方を実現しよう