Google Apps Scriptを使ったプロジェクト管理ツールの作成

Google Apps Script(GAS)は、Googleの各種サービスと連携し、効率的なプロジェクト管理ツールを作成するのに最適なツールです。この記事では、GASを使ってGoogleスプレッドシートをベースにしたプロジェクト管理ツールの作成方法を解説します。

 

moun45.hatenablog.com

 

プロジェクト管理ツールの基本機能

プロジェクト管理ツールには以下の基本機能が必要です:

  1. タスクの追加と管理
  2. 進捗状況の追跡
  3. チームメンバーへの通知
  4. 締め切りのリマインダー

スクリプトエディタを開く

まず、Googleドライブで新しいGoogleスプレッドシートを作成します。その後、ツール > スクリプトエディタを選択します。

プロジェクト管理ツールの作成

1. タスクの追加と管理

スプレッドシートにタスクを追加するためのスクリプトを作成します。以下は、タスクの追加機能を実装する例です。

function addTask(taskName, dueDate, assignee) {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
sheet.appendRow([taskName, dueDate, assignee, '未完了']);
}

function onOpen() {
var ui = SpreadsheetApp.getUi();
ui.createMenu('プロジェクト管理')
.addItem('タスクを追加', 'showTaskDialog')
.addToUi();
}

function showTaskDialog() {
var html = HtmlService.createHtmlOutputFromFile('TaskDialog')
.setWidth(400)
.setHeight(300);
SpreadsheetApp.getUi().showModalDialog(html, 'タスクを追加');
}

TaskDialog.htmlというHTMLファイルを作成し、タスクの追加フォームを作成します。

<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<body>
<form id="taskForm">
タスク名: <input type="text" id="taskName"><br>
締め切り: <input type="date" id="dueDate"><br>
担当者: <input type="text" id="assignee"><br>
<input type="button" value="追加" onclick="submitTask()">
</form>
<script>
function submitTask() {
var taskName = document.getElementById('taskName').value;
var dueDate = document.getElementById('dueDate').value;
var assignee = document.getElementById('assignee').value;
google.script.run.addTask(taskName, dueDate, assignee);
google.script.host.close();
}
</script>
</body>
</html>

2. 進捗状況の追跡

タスクの進捗状況を更新するためのスクリプトを作成します。

function updateTaskStatus(row, status) {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
sheet.getRange(row, 4).setValue(status);
}

function onEdit(e) {
var sheet = e.source.getActiveSheet();
var range = e.range;
if (range.getColumn() == 4) {
var status = range.getValue();
var row = range.getRow();
updateTaskStatus(row, status);
}
}

3. チームメンバーへの通知

タスクの追加や変更をチームメンバーに通知するためのスクリプトを作成します。

function sendNotification(email, taskName, dueDate, status) {
var subject = 'タスクの更新通知';
var body = 'タスク "' + taskName + '" の状態が "' + status + '" に更新されました。締め切り: ' + dueDate;
MailApp.sendEmail(email, subject, body);
}

function onEdit(e) {
var sheet = e.source.getActiveSheet();
var range = e.range;
if (range.getColumn() == 4) {
var status = range.getValue();
var row = range.getRow();
var taskName = sheet.getRange(row, 1).getValue();
var dueDate = sheet.getRange(row, 2).getValue();
var assignee = sheet.getRange(row, 3).getValue();
sendNotification(assignee, taskName, dueDate, status);
}
}

4. 締め切りのリマインダー

締め切りのリマインダーを自動的に送信するためのスクリプトを作成します。

function sendDeadlineReminders() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var data = sheet.getDataRange().getValues();
var today = new Date();
for (var i = 1; i < data.length; i++) {
var taskName = data[i][0];
var dueDate = new Date(data[i][1]);
var assignee = data[i][2];
var status = data[i][3];
if (status == '未完了' && dueDate - today <= 2 * 24 * 60 * 60 * 1000) {
MailApp.sendEmail(assignee, '締め切りリマインダー: ' + taskName, 'タスク "' + taskName + '" の締め切りが近づいています。締め切り: ' + dueDate);
}
}
}

// 毎日午前9時にリマインダーを送信するトリガーを設定
ScriptApp.newTrigger('sendDeadlineReminders')
.timeBased()
.everyDays(1)
.atHour(9)
.create();

まとめ

GASを使ってGoogleスプレッドシートをベースにしたプロジェクト管理ツールを作成することで、タスクの追加、進捗状況の追跡、通知、リマインダーといった機能を効率的に実装できます。これにより、プロジェクト管理がスムーズに進み、チーム全体の生産性が向上します。この記事を参考にして、自分のニーズに合わせたプロジェクト管理ツールを作成してみてください。

参考リンク

 

moun45.hatenablog.com