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

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

新規登録して質問してみよう
ただいま回答率
85.35%
Google Apps Script

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

Q&A

解決済

2回答

6682閲覧

GASでグーグルスプレッドシートからカレンダーに入れたい

yayaya22

総合スコア51

Google Apps Script

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

0グッド

0クリップ

投稿2021/05/29 00:23

スプレッドシートからイベントをgoogleカレンダーに入れたいのですが、スタートと終了時間がうまく動作せず、登録されません。

イメージ説明

GoogleAppScript

1function main(){ 2 //有効なGooglesプレッドシートを開く 3 var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('入力フォーム'); 4 5 //予約行の最後を取得 6 var num_row = sheet.getLastRow(); 7 8 //コースの取得 9 //1列目 10 var cor = sheet.getRange(num_row,1).getValue(); 11 12 //名前の取得 13 //2列目 14 var nname = sheet.getRange(num_row,2).getValue(); 15 16 //電話番号の取得 17 //3列目 18 var tel = sheet.getRange(num_row,3).getValue(); 19 20 //メールアドレスの取得 21 //4列目 22 var nmail = sheet.getRange(num_row,4).getValue(); 23 24 //日にちの取得 25 //5列目 26 var ddate = sheet.getRange(num_row,5).getValue(); 27 28 //開始時間の取得 29 //6列目 30 var time = sheet.getRange(num_row,6).getValue(); 31 //終了時間の取得 32 //7列目 33 var etime = sheet.getRange(num_row,7).getValue(); 34 35 36 37 /*カレンダーへ終日イベントを登録*/ 38 39  //登録するカレンダーIDを呼び出してeventへ格納 40 var event = CalendarApp.getCalendarById('*****.com'); 41 42 //イベントのタイトルをtitleへ格納 43 var title = nname; 44 45 //イベント日を格納 46 var day = new Date(ddate); 47 Logger.log(day); 48 49 //開始時間を格納 50 var startTime = new Date(time); 51 startTime.setHours(startTime.getHours()); 52 startTime.setMinutes(startTime.getMinutes()); 53 Logger.log(time); 54 55 //終了時間をdayへ格納 56 var endTime = new Date(etime); 57 endTime.setHours(endTime.getHours()); 58 endTime.setMinutes(endTime.getMinutes()); 59 Logger.log(etime); 60 //内容をdescriptionへ格納 61 62 var options = { 63 description: (thing), 64 } 65 //createAllDayEventでカレンダーへイベントを登録 66 event.createAllDayEvent(title,day,startTime,endTime,options); 67 68 }

エラーログ内容

9:20:26 お知らせ 実行開始
9:20:24 情報 Sat Jun 12 00:00:00 GMT+09:00 2021
9:20:24 情報 9:30
9:20:24 情報 9:45
9:20:27 エラー
Exception: The parameters (String,(class),(class),(class),(class)) don't match the method signature for CalendarApp.Calendar.createAllDayEvent.
main @ main.gs:70

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

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

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

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

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

guest

回答2

0

CalendarApp.Calendar.createAllDayEventって、パラメーターは(title, startDate, endDate, options) ですよね。パラメーターの個数も違っているし、変数名から想像するに意味合いも違っているので、このメソッドでは目的と違うのではないですか?

Class Calendar | Apps Script | Google Developers

投稿2021/05/29 05:14

itagagaki

総合スコア8402

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

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

Tatsunosuke

2021/05/29 05:18

あ、見逃してました!ありがとうございます。
guest

0

ベストアンサー

追記

そうですね、ライブラリを入れて以下を実行してみたください!

gas

1function main(){ 2 //有効なGooglesプレッドシートを開く 3 var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('入力フォーム'); 4 5 //予約行の最後を取得 6 var num_row = sheet.getLastRow(); 7 8 //コースの取得 9 //1列目 10 var cor = sheet.getRange(num_row,1).getValue(); 11 12 //名前の取得 13 //2列目 14 var nname = sheet.getRange(num_row,2).getValue(); 15 16 //電話番号の取得 17 //3列目 18 var tel = sheet.getRange(num_row,3).getValue(); 19 20 //メールアドレスの取得 21 //4列目 22 var nmail = sheet.getRange(num_row,4).getValue(); 23 24 //日にちの取得 25 //5列目 26 var ddate = sheet.getRange(num_row,5).getValue(); 27 28 //開始時間の取得 29 //6列目 30 var time = sheet.getRange(num_row,6).getValue(); 31 //終了時間の取得 32 //7列目 33 var etime = sheet.getRange(num_row,7).getValue(); 34 35 36 37 /*カレンダーへ終日イベントを登録*/ 38 39  //登録するカレンダーIDを呼び出してeventへ格納 40 var event = CalendarApp.getCalendarById('*****.com'); 41 42 //イベントのタイトルをtitleへ格納 43 var title = nname; 44 45//開始時間を格納 46 var startTime = dayjs.dayjs(ddate +" "+ time).$d ; 47 48 //終了時間をdayへ格納 49 var endTime = dayjs.dayjs(ddate +" "+ etime).$d ; 50 51 var options = { 52 description: (thing), 53 } 54 //createAllDayEventでカレンダーへイベントを登録 55 event.createEvent(title,startTime,endTime,options); 56 57 }

追記

gas

1//こっちですね 2 //createEventでカレンダーへイベントを登録 3 event.createEvent(title,startTime,endTime,options); 4

GAS(Js)は日付関連の処理が面倒なので、ライブラリの導入をお勧めします!
GASで日付操作ライブラリ「Day.js」を使う

導入されたら、以下の記述でいけると思います。

gas

1 2//開始時間を格納 3 var startTime = dayjs.dayjs(ddate +" "+ time).$d ; 4 5 //終了時間をdayへ格納 6 var endTime = dayjs.dayjs(ddate +" "+ etime).$d ; 7

投稿2021/05/29 02:07

編集2021/05/29 08:48
Tatsunosuke

総合スコア599

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

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

yayaya22

2021/05/29 05:57

こちらのライブラリを使用して、 //createEventでカレンダーへイベントを登録 event.createEvent(title,startTime,endTime,options); を実行すればよろしいでしょうか
yayaya22

2021/06/01 14:10

day.jsライブラリを導入し、上記コードを入れデバッグをしましたが、startTime,endTimeにそれぞれinvalid dateとなってしまい、カレンダー登録はされませんでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問