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

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

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

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

Google カレンダー

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

Q&A

解決済

1回答

993閲覧

getCalendarById()に無効なIDを渡すと、エラーが出ずデフォルトカレンダーが指定されてしまいます

00503murata

総合スコア2

Google スプレッドシート

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

Google カレンダー

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

0グッド

0クリップ

投稿2020/10/27 09:46

GoogleスプレッドシートからGoogleカレンダーに予定を作成するスクリプトを作っています。

使用するカレンダーのIDを特定のセルにあらかじめ記入しておき、そのカレンダーに対して予定を作成する仕様で、

Google

1 var calendar_id = sheet.getRange(6,9).getValues(); //I6セルに入力されているカレンダーIDを取得 2 var calendar = CalendarApp.getCalendarById(calendar_id); //カレンダーIDから使用するカレンダーを決定 3 var startTime = new Date(); //現在時刻を予定の開始時刻に指定 4 var hour = 3; //指定した数字×時間分の予定を作成(とりあえず3時間を指定) 5 var endTime = new Date(startTime.getTime() + (hour * 60 * 60 * 1000)); //hourに指定した時間後を終了時刻に指定 6 var event = CalendarApp.createEvent(ss_name, startTime, endTime); //タイトル、開始時刻、終了時刻を指定して予定を作成 7 var event_id = event.getId(); //作成した予定のイベントIDを取得

このようなコードを組んで実行したところ、無事指定したカレンダーに予定が作成されました。

その後、カレンダーIDを記入するセルが空欄になっていたり無効な文字列が入っていた場合の動作を確認しようと思い、セルを空欄にしてからスクリプトを実行しました。
何らかのエラーが表示されると予想していたのですが、デフォルトカレンダーに予定が作成されてしまいました。空欄ではなく、違う文字列(Googleと関係のないメールアドレス)を入力して実行してもやはりデフォルトカレンダーに予定が作成されます。

カレンダーIDを指定するセルに無効な値が入っていたときや空欄だった場合にエラーメッセージを出して処理を終了するようにしたいのですが、どのようにすれば良いのでしょうか?

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

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

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

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

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

guest

回答1

0

ベストアンサー

CalendarApp.getAllCalendars() (または CalendarApp.getAllOwnedCalendars()) でカレンダーの一覧、Calendar.getId() で各カレンダーの ID を取得できるので、セルに入力された ID が存在するかチェックするといいでしょう。

JavaScript

1var calendar_id = sheet.getRange(6, 9).getValues(); 2const calendars = CalendarApp.getAllOwnedCalendars().find( 3 calendar => calendar.getId() === calendar_id 4); 5if(!calendars) { 6 throw new Error("不正なID"); 7} 8//(以下省略)

投稿2020/10/27 10:10

draq

総合スコア2577

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

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

00503murata

2020/10/28 00:59

ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問