本日の記事では,スプレッドシートとGoogleカレンダーを組み合わせたスケジュール管理の方法をご紹介します!
本日の記事がおすすめな方
下記のようなスプレッドシート形式のスケジュールで進行管理をされている方は多いのではないでしょうか。
もちろんこれでも進行管理はできますが,案件が多くなってくると管理が面倒ですし,スケジュールの把握が困難になります。
そんなときにGoogle Apps Script(GAS)を活用すれば下記の動画のようなことができます。
「スケジュールを登録」ボタンを押すだけで簡単にGoogleカレンダーに予定が追加できることが分かると思います。
案件ごとにスケジュールを作っておいて,すべてGoogleカレンダーに集約しておけば進行管理も簡単にできますね。
このスプレッドシートは下記より無料でダウンロードができるので,ぜひご活用ください!
※必ずコピーを作成してからご使用ください。
そもそもGoogle Apps Scriptって何?って方のために簡単にご説明します。
Google Apps Scriptとは
Google社が提供しているプログラミング言語で,略してGASと呼ばれます。
Webブラウザ上で動作する「JavaScript」をベースに開発されており,Gmail,Googleスプレッドシート,Googleカレンダーなどのアプリを操作することができます。
また,Googleアカウントさえ作れば無料で使える点から,誰でも気軽に利用することができます。
Google Apps Scriptでできること
Google Apps Scriptを利用する上での注意点
GASはGoogleのアカウントごとに実行時間や実行回数の制限が決まっています。下記の表はGoogleアカウント(無料)とGoogle Workspace(有料)を比較したものです。
制限 | Googleアカウント(無料) | Google Workspace(有料) |
---|---|---|
スクリプト実行時間 | 6分/実行 | 6分/実行 |
メール本文のサイズ | 200KB/メッセージ | 400KB/メッセージ |
添付ファイルサイズ | 25MB/メッセージ | 25MB/メッセージ |
メール受信者数 | 100件/日 | 1500件/日 |
カレンダーイベント作成数 | 5000件/日 | 10000件/日 |
ドキュメント作成数 | 250件/日 | 1500件/日 |
全体のコード
本日の記事で紹介したスプレッドシートに記述されている全体のコードは下記のとおりです。
function confirmAndAddWorkToCalendar() {
var ui = SpreadsheetApp.getUi(); // ユーザーインターフェースを取得
var response = ui.alert('スケジュールをgoogleカレンダーに登録しますか?', ui.ButtonSet.YES_NO);
// ユーザーが「はい」を選択した場合、スケジュールをカレンダーに登録する
if (response == ui.Button.YES) {
addOrUpdateWorkToCalendarOptimized(); // 最適化された関数を呼び出す
} else {
ui.alert('操作がキャンセルされました。');
}
}
function addOrUpdateWorkToCalendarOptimized() {
var settingsSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('使い方');
var calendarId = settingsSheet.getRange("A2").getValue(); // '使い方'シートのA2セルからカレンダーIDを取得
var calendar = CalendarApp.getCalendarById(calendarId); // このIDを使用してカレンダーを取得
if (!calendarId) {
SpreadsheetApp.getUi().alert('カレンダーIDが指定されていません。');
return; // カレンダーIDがなければ処理を中止
}
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var project = sheet.getRange("C1").getValue(); // プロジェクト名を取得
var startRow = 2; // スタートする行(ヘッダーを除く)
var numRows = sheet.getLastRow() - 1; // データの数
var dataRange = sheet.getRange(startRow, 1, numRows, 4); // A列からD列までのデータ範囲
var data = dataRange.getValues(); // データを二次元配列として取得
var eventsToCreate = [];
var existingEventsCache = {};
data.forEach(function (row) {
var date = row[0]; // 日付列
var workContent = row[2]; // 作業内容列
var description = row[3]; // D列の内容を説明として使用
if (date && workContent) {
var fullWorkContent = project + "_" + workContent; // プロジェクト名と作業内容を結合
var formattedDate = Utilities.formatDate(new Date(date), Session.getScriptTimeZone(), "yyyy-MM-dd");
if (!existingEventsCache[formattedDate]) {
existingEventsCache[formattedDate] = calendar.getEventsForDay(new Date(date));
}
var existingEvents = existingEventsCache[formattedDate];
var eventExists = existingEvents.some(function (event) {
return event.getTitle() === fullWorkContent;
});
if (!eventExists) {
eventsToCreate.push({ date: new Date(date), title: fullWorkContent, description: description });
}
}
});
// 一括でイベントを作成
eventsToCreate.forEach(function (event) {
calendar.createAllDayEvent(event.title, event.date, { description: event.description });
});
}
まとめ
本日の記事では,Googleカレンダーとスプレッドシートを連携する方法,Google Apps Scriptの概要についての解説をしました。
今後もGASを活用した業務改善例の紹介や,GASについての最新情報を発信していきます。
コメント