中級者向け実践:一般企業でのGAS自動化・効率化による週次レポート作成システム(部門利用)

中級者向け実践:一般企業でのGAS自動化・効率化による週次レポート作成システム(部門利用)

本記事では、一般企業におけるGAS(Google Apps Script)を用いた週次レポート作成システムの構築について、中級者向けに解説します。部門内で共有し、効率的な情報共有と業務改善を目指します。

GASとは?

GAS(Google Apps Script)は、Google Workspaceの各種サービス(Gmail、スプレッドシート、ドキュメントなど)を連携させて、さまざまな処理を自動化できるスクリプト言語です。JavaScriptをベースとしているため、Web開発の経験がある方なら比較的容易に習得できます。

週次レポート作成システムの概要

本システムでは、以下の機能を実現します:

  • スプレッドシートからのデータ収集
  • レポートテンプレート(Googleドキュメント)へのデータ挿入
  • PDF形式でのレポート生成
  • Gmailによるレポートの自動送信

システム構築手順

1. スプレッドシートの準備

週次レポートの元となるデータを格納するスプレッドシートを作成します。例えば、以下のような構成にします:

  • A列:日付
  • B列:担当者
  • C列:タスク内容
  • D列:進捗状況
  • E列:課題・問題点

2. レポートテンプレートの作成

Googleドキュメントでレポートのテンプレートを作成します。データ挿入箇所には、{{日付}}{{担当者}}{{タスク内容}}などのプレースホルダーを記述します。

3. GASコードの作成

GASエディタを開き、以下のコードを記述します。

// スプレッドシートIDとドキュメントIDを設定
const SPREADSHEET_ID = "YOUR_SPREADSHEET_ID";
const DOCUMENT_ID = "YOUR_DOCUMENT_ID";

function createWeeklyReport() {
// スプレッドシートからデータを取得
const sheet = SpreadsheetApp.openById(SPREADSHEET_ID).getActiveSheet();
const lastRow = sheet.getLastRow();
const data = sheet.getRange(2, 1, lastRow - 1, 5).getValues(); // 2行目からデータ取得

// レポートテンプレートを開く
const templateDoc = DocumentApp.openById(DOCUMENT_ID);
const body = templateDoc.getBody();

// 今日の日付を取得
const today = Utilities.formatDate(new Date(), "JST", "yyyy/MM/dd");

// データに基づいてレポートを作成
data.forEach(row => {
const date = Utilities.formatDate(row[0], "JST", "yyyy/MM/dd");
const staff = row[1];
const task = row[2];
const progress = row[3];
const issue = row[4];

// テンプレートをコピー
const newDoc = templateDoc.makeCopy(`${today}_${staff}_週次レポート`);
const newDocId = newDoc.getId();
const newBody = newDoc.getBody();

// プレースホルダーをデータで置換
newBody.replaceText("{{日付}}", date);
newBody.replaceText("{{担当者}}", staff);
newBody.replaceText("{{タスク内容}}", task);
newBody.replaceText("{{進捗状況}}", progress);
newBody.replaceText("{{課題・問題点}}", issue);

// PDFとして保存
const pdfBlob = newDoc.getAs('application/pdf');

// Google Driveに保存(必要に応じてフォルダIDを指定)
DriveApp.createFile(pdfBlob).setName(`${today}_${staff}_週次レポート.pdf`);

// ドキュメントを閉じる
DocumentApp.openById(newDocId).saveAndClose();

// 必要に応じてファイルを削除
DriveApp.getFileById(newDocId).setTrashed(true);

// メールで送信(必要に応じて宛先、件名、本文を編集)
MailApp.sendEmail({
to: "example@example.com",
subject: `${today}_${staff}_週次レポート`,
body: "週次レポートです。",
attachments: [pdfBlob]
});
});
}

ポイント:

  • YOUR_SPREADSHEET_IDYOUR_DOCUMENT_IDは、実際のスプレッドシートIDとドキュメントIDに置き換えてください。
  • MailApp.sendEmailtosubjectbodyは、必要に応じて編集してください。

4. トリガーの設定

GASエディタの「トリガー」から、週次で実行されるようにトリガーを設定します。例えば、毎週金曜日の夕方に実行するように設定します。

応用例と活用シーン

  • 進捗管理:各担当者のタスク進捗を可視化し、遅延状況を把握できます。
  • 情報共有:チーム全体の状況を共有し、連携を強化できます。
  • 業務改善:課題や問題点を分析し、改善策を検討できます。

まとめ

GASを用いることで、週次レポート作成を自動化し、大幅な効率化を実現できます。本記事を参考に、自社の業務に合わせたシステムを構築してみてください。