非IT企業に勤める中年サラリーマンのIT日記

非IT企業でしかもITとは全く関係ない部署にいる中年エンジニア。唯一の趣味がプログラミングという”自称”プログラマー。

【GAS】無料版Gmail同士で他人のGoogleカレンダーに予定を書き込む方法

   

Google Apps Script(GAS)を使ってカレンダー操作をする際、自分のカレンダーなら簡単ですが他人のカレンダーとなると少しハードルが高くなります。Google Workspaceのような組織アカウントでなくても無料版Gmail同士でカレンダー共有設定を変えることでGASからの自動書き込みが可能になります。今回は、権限エラーにハマらないための設定手順とシンプルな実行コードを紹介します。

相手(登録先)のカレンダー設定手順

予定を書き込んでもらう側(店長や共有相手)のアカウントで、以下の設定を行う必要があります。

  1. PC版Googleカレンダーを開きます。
  2. 上部の歯車アイコンをクリック、プルダウンメニューから「設定」を選びます。
  3. 左側の「マイカレンダーの設定」から自分のアカウントを選択するとサブメニューが現れるので、その中から「共有する相手」をクリックします。
  4. ユーザーやグループの追加」をクリックし、共有したいメールアドレス(自分)を入力し、権限を「予定の変更」または「予定の変更および共有の管理」を選択してください。「閲覧権限」だけではGASから書き込みができません。
  5. 送信」を押して設定完了です。

 

 

書き込むためのプログラム

設定ができたら、GAS側で以下のコードを実行します。相手のメールアドレスをIDとして指定するのがポイントです。

/**
 * 共有設定済みの他人のカレンダーに予定を入れる最小コード
 */
function writeToOthersCalendar() {
  // 1. 相手のカレンダーID(メールアドレス)を指定
  const calendarId = 'target-user@gmail.com'; 
  
  // 2. カレンダーを取得
  const calendar = CalendarApp.getCalendarById(calendarId);
  
  // 3. 予定を作成(タイトル, 開始日時, 終了日時)
  // ※ここでは「今日」の「13時〜14時」に固定の予定を作成します
  const now = new Date();
  const startTime = new Date(now.setHours(13, 0, 0));
  const endTime = new Date(now.setHours(14, 0, 0));
  
  calendar.createEvent('GASからのテスト予定', startTime, endTime);
  
  console.log('書き込みが完了しました!');
}
 

 

実行結果

結果は以下の通り。(21日のところ)

 

無料版Gmailでも他人のカレンダー操作に成功しました。共有設定を正しく行えば、特別なAPI不要で店舗やチームの予定一括登録システムが作れます。

 

 

 

スポンサーリンク

 - Google Apps Script