質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
AppSheet

AppSheetは、ノーコードでアプリ開発ができるプラットフォーム。プログラミングの知識がなくても、マウス操作だけで簡単にアプリを開発できます。サードパーティサービスに標準で接続できる他、サンプルアプリケーションも豊富。料金がリーズナブルな点も特徴です。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

解決済

スプレッドシートの変更をGoogleカレンダーに反映させたい

cahier0401
cahier0401

総合スコア14

AppSheet

AppSheetは、ノーコードでアプリ開発ができるプラットフォーム。プログラミングの知識がなくても、マウス操作だけで簡単にアプリを開発できます。サードパーティサービスに標準で接続できる他、サンプルアプリケーションも豊富。料金がリーズナブルな点も特徴です。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

2回答

1評価

1クリップ

440閲覧

投稿2022/03/27 11:24

現状

AppSheetとGASを利用して家事管理アプリを作成しています。
AppSheetでは1つのテーブル(≒スプレッドシート)につき1つしかカレンダー表示ができないため、GASを使って2つのスプレッドシート(家事ログ&買い物ログ)をひとつのGoogleカレンダーに集約し、そのカレンダーをAppSheetのアプリ上に表示する方法をとっています。

問題

自動でスプレッドシートに追加された行をGoogleカレンダーに反映させるところまでは上手くいったのですが、既に追加された予定についてスプレッドシートに変更を加えても当然ですがGoogleカレンダーには反映されません。

質問

スプレッドシート上で日時を変更した際にGoogleカレンダーの予定も変更できるようにしたいのですが、何か良い方法はありますでしょうか?

以下、該当箇所のGASのコードとスプレッドシートです。

家事ログスプレッドシート
家事ログID家事ID家事名日時カレンダーID
***********洗濯2022/03/19 16:00***@gmail.com
買い物ログスプレッドシート
買い物ログID商品ID商品名購入日カレンダーID
***********醤油2022/03/19 00:00***@gmail.com
GASコード

Javascript

function registerCalendar1() { var calendar = CalendarApp.getCalendarById(`**********@group.calendar.google.com`); var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); var sheet = spreadsheet.getSheetByName(`買い物ログ`); var lastRow = sheet.getLastRow(); var contents = sheet.getRange(`C2:E${lastRow}`).getValues() for(var i=0; i < contents.length; i++){ var[title, day, status] = contents[i]; if(status == ""){ var date = new Date(day) var category = "買い物"; var event = calendar.createAllDayEvent(title,date,{description:category}); var eventId = event.getId(); sheet.getRange(`E${i + 2}`).setValue(eventId); } } } function registerCalendar2() { var calender = CalendarApp.getCalendarById(`**********@group.calendar.google.com`); var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); var sheet = spreadsheet.getSheetByName(`家事ログ`); var lastRow = sheet.getLastRow(); var contents = sheet.getRange(`C2:E${lastRow}`).getValues() for(var i=0; i < contents.length; i++){ var[title, daytime, id] = contents[i]; if(id == ""){ var datetime = new Date(daytime) var category = "家事"; var event = calender.createEvent(title,datetime,datetime,{description:category}); var eventId = event.getId(); sheet.getRange(`E${i + 2}`).setValue(eventId); } } }

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

cahier0401

2022/03/27 11:33

訂正です。 2つのスプレッドシートの「カレンダーID」は「イベントID」の誤りです。 追記です。 descriptionに「買い物」「家事」等のカテゴリーを挿入することで、AppSheet上でイベントの種類ごとに色分けできるようにしています。また、「買い物ログID」「商品ID」「家事ログID」「家事ID」はAppSheetのRaf機能を使う上で必要なものであり、スプレッドシートとGoogleカレンダーの連携には用いないであろうと踏んでいます。
cahier0401

2022/03/27 14:12

以下のようなコードを試してみましたが、getEventByIdが定義されていない(?)とかでエラーが出ました。 function registerCalendar1() { var calendar = CalendarApp.getCalendarById(`c6uqve02j7s6np2u71380ho71k@group.calendar.google.com`); var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); var sheet = spreadsheet.getSheetByName(`買い物ログ`); var lastRow = sheet.getLastRow(); var contents = sheet.getRange(`C2:E${lastRow}`).getValues() for(var i=0; i < contents.length; i++){ var[title, day, id] = contents[i]; if(id == ""){ var date = new Date(day) var category = "買い物"; var event = calendar.createAllDayEvent(title,date,{description:category}); var eventId = event.getId(); sheet.getRange(`E${i + 2}`).setValue(eventId);} else{ var event = getEventById(id) var date = new Date(day) event.setAllDayDate(date) } } }

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

AppSheet

AppSheetは、ノーコードでアプリ開発ができるプラットフォーム。プログラミングの知識がなくても、マウス操作だけで簡単にアプリを開発できます。サードパーティサービスに標準で接続できる他、サンプルアプリケーションも豊富。料金がリーズナブルな点も特徴です。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。