記事内に広告が含まれています。

ノンプログラマーが作る【GASでLINE構築】公式アカウント番外編★スプレッドシートからGoogleカレンダー登録

自分で作ろう!プログラミングでLINE構築 ~最終回~

こんにちは!

このブログにお越しいただきありがとうございます。管理人のmorrisです。

更新が長らく途絶えており大変失礼いたしました。

町内会公式LINEというニッチなテーマにもかかわらず、何人もの方から「参考にしているよ!」「作ってみたよ!」のお声をいただき、非常にありがたく感じています。ありがとうございます。

今回は、ノンプログラマーでも簡単にできる【GASでLINE構築】シリーズの最終回として、「スプレッドシートからGoogleカレンダー登録」をご紹介します。

これは、実はLINEアカウント全く関係ないのですが… 町内会の役員さんたちとのスケジュール管理・共有に便利だと思い実装しました。

私が構築する際に参考にしたサイトはwhizz-technologyさんの「スプレッドシートからカレンダーに連携してスケジュールを一括登録する【Google Apps Script(GAS)】」です。こちらもどうそ参考にしてください。

それでは、さっそく始めましょう!

なお、うまく動かない方のために「ココナラ」でサポートをしています。

何故かエラーになる…と詰んでしまったときに気軽にどうぞ。

GASを用いたLINE構築のサポートをします ブログの説明だけではうまくいかない人向け
スポンサーリンク

スプレッドシートからGoogleカレンダー登録

  • Googleスプレッドシートに記入した予定を
  • GASを使って
  • Googleカレンダーに連携・自動登録

いちいち手入力しなくても、自動でスケジュールを反映してくれるって、便利ですよね!

スプレッドシートからGoogleカレンダー登録することは、以下の方におすすめです。

  • Excelやスプレッドシートで予定管理しているのを、Googleカレンダーに手入力するのが手間
  • GAS(Google Apps Script)を使ってみたいけど、プログラムはよく分からない
  • 複数人と予定を共有したい

①共有カレンダーを新規作成

まず、共有専用のカレンダーを作成しましょう。

Googleアカウントのカレンダーを表示します。

上部右側の歯車マークから、「設定」を開き、カレンダーを追加 →新しいカレンダーを作成


新しいカレンダーを作成すると、「カレンダーID」が付与されます。

あとでこのIDを使用しますので覚えといてくださいね!

これで、共有カレンダーの土台は完成です。

② スプレッドシートの準備

次に、予定を入力するためのスプレッドシートを作成しましょう。

LINE公式アカウントとは関係ないので、別シートで作成したほうが運用しやすいでしょう。
以下のような構成で作成してください。

A1カラムに「連携」がくるように作ってます

日付と時間は正しい形式(スプレッドシートの「日付」「時間」フォーマット)で入力するのがポイント!


③ GASスクリプトを設定する

次に、スプレッドシート→拡張機能→App Scriptを開き、以下のスクリプトを貼り付けます。

カレンダーIDは、@group.calendar.google.comごと貼り付けてください

function createSchedule() {
const calendarId = "カレンダーID@group.calendar.google.com"; //先ほどのカレンダーIDを貼り付け
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
const topRow = 2;
const data = sheet.getRange(topRow, 1, sheet.getLastRow() - topRow + 1, 6).getValues();
const calendar = CalendarApp.getCalendarById(calendarId);
if (!calendar) return Logger.log("❌ カレンダーが取得できません。IDまたは権限をご確認ください。");

data.forEach((row, i) => {
const [status, date, start, end, title, desc] = row;
if (["済", "非"].includes(status) || !date) return;

try {
const options = { description: desc };
if (!start || !end) {
calendar.createAllDayEvent(title, new Date(date), options);
} else {
const startDate = new Date(date), endDate = new Date(date);
startDate.setHours(start.getHours(), start.getMinutes());
endDate.setHours(end.getHours(), end.getMinutes());
calendar.createEvent(title, startDate, endDate, options);
}
sheet.getRange(topRow + i, 1).setValue("済");
} catch (e) {
Logger.log("❌ エラー:" + e);
}
});

Browser.msgBox("✅ カレンダー登録を完了しました");
}

④ スクリプトを実行

GASエディタ上部の「関数を選択」でregisterEventsToCalendarを選び、「▶」をクリックして実行!
初回は認証画面が出てくるので、指示に従ってアクセスを許可してください。


実行開始の表示から、しばらくグルグルしていますが… 心配ありません。

スプレッドシートをのぞいてみてください。すると、カレンダー登録完了のお知らせが!

これをOK押すと、スクリプト実行終了の文字が表示され、カレンダーにも登録が完了します。

スプレッドシートに「カレンダー連携」のサブメニューを追加しよう

GASを活用すれば、スプレッドシートにカスタムメニューを追加して、ワンクリックで処理を実行できるようになります。たとえば、Googleカレンダーに予定を登録する「createSchedule」関数を、以下のようにメニューから呼び出せるようにするには、このようなコードを使います。

function onOpen() {
// スプレッドシートのメニューにカスタムメニュー「カレンダー連携 > 実行」を作成
var ss = SpreadsheetApp.getActiveSpreadsheet();
var subMenus = [{
name: "実行",
functionName: "createSchedule" // 実行で呼び出す関数を指定
}];
ss.addMenu("カレンダー連携", subMenus);
}

このコードをスクリプトエディタに追加しておくと、スプレッドシートを開いたときに「カレンダー連携」というメニューが表示されるようになります。そこから「実行」を選ぶことで、手軽に予定登録処理を実行できるようになります。

いちいちApp Scriptを開かなくてよいので便利です!


カレンダーを共有しよう

予定を共有したい相手がいるとき、自分のGoogleカレンダーを「閲覧のみ」で共有すれば、相手はあなたのスケジュールを確認できます。以下の手順で設定できます。


①Googleカレンダーを開く

パソコンでGoogleカレンダーを開きます。
(スマホアプリでは一部の設定ができないため、PCブラウザでの操作をおすすめします)


②共有したいカレンダーを選ぶ

画面左側に「マイカレンダー」の一覧が表示されています。
共有したいカレンダーにカーソルを合わせ、右に表示される「︙(縦の3点)」をクリックし、「設定と共有」を選びます。


③特定の人と共有する

「共有する相手」セクションまでスクロールします。
「ユーザーを追加」をクリックし、相手のGmailアドレスを入力します。


④権限を「予定の表示(詳細なし)」または「予定の表示(すべての予定の詳細)」に設定

相手に編集させたくない場合は、

  • 「予定の表示(すべての予定の詳細)」:予定のタイトルや内容も見える
  • 「予定の表示(詳細なし)」:予定がある時間帯だけ確認可能

どちらかを選んで「送信」すれば、相手に共有通知が届きます。


【補足】相手はGoogleアカウントが必要

共有相手もGoogleアカウントでログインしている必要があります。
(Gmailを使っていれば基本的にOK)

これで、あなたのカレンダーを閲覧できるようになりました。
予定のダブルブッキング防止や、チームや家族間のシェアにも役立ちますよ!

最後に

LINE構築シリーズの締めくくりとして、スプレッドシート → カレンダー連携の方法をご紹介しました。
これで、スプレッドシートで予定を一括管理 → 自動でカレンダーに反映・共有までができるようになります。

面倒ですが、一度仕組みを作ってしまえばあとは簡単!

ぜひ、チャレンジしてみてください。

長きにわたりシリーズを読んでくださり、ありがとうございました。

今後もいろんな情報を発信していきますね。どうぞよろしくお付き合いください。