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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google カレンダー

Google カレンダーは、Google社が提供する無料のスケジュール管理ツールです。パソコンやスマートフォン、タブレットなどからアクセスし、スケジュールの追加・変更が可能。Googleアカウントがあれば誰でも使用できます。

Google Apps Script

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

3186閲覧

GAS:スプレッドシートからGoogleカレンダーに出力した際、イベントIDも出力したい

nezumimuzen

総合スコア19

Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google カレンダー

Google カレンダーは、Google社が提供する無料のスケジュール管理ツールです。パソコンやスマートフォン、タブレットなどからアクセスし、スケジュールの追加・変更が可能。Googleアカウントがあれば誰でも使用できます。

Google Apps Script

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2020/07/22 12:09

前回質問:https://teratail.com/questions/279473

上記の質問よりGoogleカレンダーの予定のイベントIDが必要なのですが、下記のコードではイベントIDが書き出されていないようで、解決案をお教えいただきたく質問いたしました。
下記のコードで行っていることは
スプレッドシート上の予約日を参照にタイトルは「名前」、説明欄に「電話番号」予定を入れ、処理後にイベントIDを書き出す、というような処理を行なっております。
しかし、書き出されたイベントIDは「yyyyyy@google.com」といった形で、Googleカレンダー上で対象の予定を開いてイベントIDを確認したところ、さらに長く、文字列も違うIDでした。
下記のコード上で正式なイベントIDの書き出し方がわかりません。
ご教授願います。。

GAS処理前
|名前|電話番号|予約日|イベントID
|:--|:--:|--:|
|aa|09000000000|2020/7/24|

GAS処理後
|名前|電話番号|予約日|イベントID
|:--|:--:|--:|
|aa|09000000000|2020/7/24|yyyyyy@google.com

javascript

1function addTaskEvents() { 2 3var cal = CalendarApp.getCalendarById('xxxxxxxxxxxxxxxxx@group.calendar.google.com'); //カレンダーIDでカレンダーを取得 4 5var objSpreadsheet = SpreadsheetApp.getActiveSpreadsheet(); 6 var mySheet = objSpreadsheet.getSheetByName("予約");  7 var dat = mySheet.getDataRange().getValues(); //シートデータを取得 8 9for(var i=1;i<dat.length;i++){ 10 if(dat[i][3] == ""){ 11 12/* 日時をセット */ 13 var evtDate = new Date(dat[i][2]); 14 var evTime = "18:00" 15 var Name =dat[i][0] 16 var option =dat[i][1] 17 18var myEvt = cal.createEvent(Name , evtDate , evtTime , option); 19} 20 21dat[i][3]= myEvt.getID();//イベントIDを入力 22} 23mySheet.getRange(1,1,i,3).setValues(dat); 24}

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

  • createEventの引数が間違っている。正しくは「タイトル、開始日時、終了日時、オプション」
  • オプションはJSON形式で設定する
  • getIDではなくgetId
  • 得られたイベントIDは「「yyyyyy@google.com」という形式だが、これでちゃんと削除を行なえることを確認している(コメント化されたコードを参照)

GAS

1function addTaskEvents() { 2 var cal = CalendarApp.getCalendarById('XXXXXXXX@group.calendar.google.com'); //カレンダーIDでカレンダーを取得 3 4 var objSpreadsheet = SpreadsheetApp.getActiveSpreadsheet(); 5 var mySheet = objSpreadsheet.getSheetByName("予約");  6 var dat = mySheet.getDataRange().getValues(); //シートデータを取得 7 8 for(var i = 1; i < dat.length; i++) { 9 if (dat[i][3] == "") { 10 var title = dat[i][0]; 11 var startDate = new Date(Utilities.formatDate(dat[i][2], 'Asia/Tokyo', 'yyyy-MM-dd') + " 18:00"); 12 var endDate = new Date(Utilities.formatDate(dat[i][2], 'Asia/Tokyo', 'yyyy-MM-dd') + " 20:00"); 13 var options = { 14 description: "" + dat[i][1], 15 } 16 17 var myEvt = cal.createEvent(title , startDate , endDate, options); 18 var eventId = myEvt.getId(); 19 dat[i][3]= eventId; 20 21 // var checkEvent = cal.getEventById(eventId); 22 // checkEvent.deleteEvent(); 23 } 24 } 25 mySheet.getRange(1, 1, dat.length, dat[0].length).setValues(dat); 26}

投稿2020/07/22 14:42

Daregada

総合スコア11990

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nezumimuzen

2020/07/24 09:49

Daregada様 改めての回答ありがとうございます! ご指摘いただいたgetIDの部分が間違っており機能していませんでした! また、得られたイベントIDの形式が違っていても動作するとは思わず、テストをおこうなう前に質問してしまいました。 以降は疑問に思っても一度動作させてから質問しようと思います。 丁寧な回答誠にありがとうございました!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問