スプレッドシートで作成した予定表をカレンダーに一括表示
スプレッドシートで作成した予定表をカレンダーに一括表示
自分の表でカスタマイズしてやってみてください。
上記のスケジュール表の例のようにスケジュール表を作成しましょう。
そして、水色のタイトルをGAS(Google Apps Script)で読み込みます。
GAS(Google Apps Script)⇒Googleの提供するサービスと連携して利用するためのプログラミング言語
GASを使用するために、スクリプトエディタを開きます。
拡張機能タブから、Apps Scriptをクリックするとスクリプトエディタが開きます。
このスクリプトエディタに、下記に掲示するコードをコピーして
デフォルトで表示されている1~4行目を削除して貼り付けましょう。
function onOpen() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
//スプレッドシートのメニューにカスタムメニュー「カレンダー連携 > 実行」を作成
var subMenus = [];
subMenus.push({
name: "実行",
functionName: "createSchedule" //実行で呼び出す関数を指定
});
ss.addMenu("カレンダー連携", subMenus);
}
/**
* 予定を作成する
*/
function createSchedule() {
// 連携するアカウント
const gAccount = "★★@gmail.com"; // ★★ここに連携するカレンダーのアドレスを入れる
// 読み取り範囲(表の始まり行と終わり列)
const topRow = 6;
const lastCol = 9;
// 0始まりで列を指定しておく
const statusCellNum = 1;
const dayCellNum = 2;
const startCellNum = 4;
const endCellNum = 5;
const titleCellNum = 6;
const locationCellNum = 7;
const descriptionCellNum = 8;
// シートを取得
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
// 予定の最終行を取得
var lastRow = sheet.getLastRow();
//予定の一覧を取得
var contents = sheet.getRange(topRow, 1, sheet.getLastRow(), lastCol).getValues();
// googleカレンダーの取得
var calender = CalendarApp.getCalendarById(gAccount);
//順に予定を作成(今回は正しい値が来ることを想定)
for (i = 0; i <= lastRow - topRow; i++) {
//「済」か、空の場合は飛ばす
var status = contents[i][statusCellNum];
if (
status == "済" ||
status == "済み" ||
status == "OK" ||
contents[i][dayCellNum] == ""
) {
continue;
}
// 値をセット 日時はフォーマットして保持
var day = new Date(contents[i][dayCellNum]);
var startTime = contents[i][startCellNum];
var endTime = contents[i][endCellNum];
var title = contents[i][titleCellNum];
// 場所と詳細をセット
var options = {location: contents[i][locationCellNum], description: contents[i][descriptionCellNum]};
try {
// 開始終了が無ければ終日で設定
if (startTime == '' || endTime == '') {
//予定を作成
calender.createAllDayEvent(
title,
new Date(day),
options
);
// 開始終了時間があれば範囲で設定
} else {
// 開始日時をフォーマット
var startDate = new Date(day);
startDate.setHours(startTime.getHours())
startDate.setMinutes(startTime.getMinutes());
// 終了日時をフォーマット
var endDate = new Date(day);
endDate.setHours(endTime.getHours())
endDate.setMinutes(endTime.getMinutes());
// 予定を作成
calender.createEvent(
title,
startDate,
endDate,
options
);
}
//無事に予定が作成されたら「済」にする
sheet.getRange(topRow + i, 2).setValue("済");
// エラーの場合(今回はログ出力のみ)
} catch(e) {
Logger.log(e);
}
}
// ブラウザへ完了通知
Browser.msgBox("完了");
}
※ //の付いている文は、コードの説明です。
コピペしたコードの、20行目 "★★@gmail.com"
この★★の部分を自分のGmailアカウントに直しましょう。
プロジェクト名の変更や削除は、3点アイコンから行えます。
22行23行目は、スケジュール表の読み取り範囲を指定しています。
今回のスケジュール表の例では、6行目から始まり、列のカテゴリが9列目までなので
このように記述します。列が増える場合は、23行目の数字を替えましょう。
27行目から33行目までが、スケジュール表の青く塗りつぶされた項目を読み込む記述です。
記述が完了したら、上に並んでいるアイコンから保存してから実行しましょう。
実行すると、このように権限を確認して承認する必要があります。
自分のGmailアカウントをクリックします。
このような表示が出ますので、詳細をクリックしてプロジェクトに移動をクリックします。
安全でないページと書かれていますが、自分で作成したスクリプトなので安心してください。
そして、権限を許可するとアカウントが認証されます。
アカウント認証が済んだらスプレッドシートに戻ります。
すると、「カレンダー連携」タブが増えているのでそちらをクリックします。
これで記述したスクリプトが実行されます。
GoogleスプレッドシートとGoogleカレンダーの連携が完了すると、自動的に「済」が入力されます。
このように一括で、スケジュール表がカレンダーに表示されました😊
補足👇
「Googleスプレッドシートの設定」から「タイムゾーン」を「(GMT+09:00)Tokyo」に変更する。
もうひとつが、Googleカレンダーの設定で右上の⚙アイコンの設定より、
「言語と地域」「タイムゾーン」を「(GMT+09:00)日本標準時」に変更する。
ソースを変更すれば、項目も増やせたりもするのでいろいろ変更してみてくださいね😊
アカウントを作成 して、もっと沢山の記事を読みませんか?
この記事にコメントをしてみませんか?