自分で作ろう!プログラミングでLINE構築 ~最終回~
こんにちは!
このブログにお越しいただきありがとうございます。管理人のmorrisです。

更新が長らく途絶えており大変失礼いたしました。
町内会公式LINEというニッチなテーマにもかかわらず、何人もの方から「参考にしているよ!」「作ってみたよ!」のお声をいただき、非常にありがたく感じています。ありがとうございます。
今回は、ノンプログラマーでも簡単にできる【GASでLINE構築】シリーズの最終回として、「スプレッドシートからGoogleカレンダー登録」をご紹介します。
これは、実はLINEアカウント全く関係ないのですが… 町内会の役員さんたちとのスケジュール管理・共有に便利だと思い実装しました。
私が構築する際に参考にしたサイトはwhizz-technologyさんの「スプレッドシートからカレンダーに連携してスケジュールを一括登録する【Google Apps Script(GAS)】」です。こちらもどうそ参考にしてください。
それでは、さっそく始めましょう!

なお、うまく動かない方のために「ココナラ」でサポートをしています。
何故かエラーになる…と詰んでしまったときに気軽にどうぞ。
スプレッドシートから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構築シリーズの締めくくりとして、スプレッドシート → カレンダー連携の方法をご紹介しました。
これで、スプレッドシートで予定を一括管理 → 自動でカレンダーに反映・共有までができるようになります。
面倒ですが、一度仕組みを作ってしまえばあとは簡単!
ぜひ、チャレンジしてみてください。
長きにわたりシリーズを読んでくださり、ありがとうございました。
今後もいろんな情報を発信していきますね。どうぞよろしくお付き合いください。