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

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

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

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

Q&A

0回答

1598閲覧

スプレッドシートとカレンダーを連携したときの日をまたぐ予定の表示

HU_koyo

総合スコア0

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

0グッド

0クリップ

投稿2021/11/29 06:22

Googleのスプレッドシートからカレンダーへ予定を一括登録したいと考えております。
そこで、日をまたぐ予定について質問したいことがございます。

カレンダー上で直接入力すると、週表示で開始時間から終了時間まで帯がひかれるように表示されるのですが
スプレッドシートからの入力となると終日表示の部分に表示されてしまうのが視覚的にどうも不便に感じています。
添付の画像をご覧ください。
イメージ説明

スプレッドシートからの入力でもカレンダー上で入力したように表示されるようにしたいのですが、
何か良い方法はありますでしょうか。

コードは以下の通りです。

function CreateSchedule() { // googleカレンダーの取得 const calender = CalendarApp.getCalendarById("***@group.calendar.google.com") // 読み取り範囲(表の始まり行と終わり列) const topRow = 2 const lastCol = 8 const statusCellCol = 1 // 予定の一覧バッファ内の列(0始まり) const statusNum = 0 const startdayNum = 1 const startNum = 2 const enddayNum = 3 const endNum = 4 const titleNum = 5 // シートを取得 const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet() // 予定の最終行を取得 let lastRow = sheet.getLastRow() //予定の一覧をバッファに取得 const contents = sheet.getRange(topRow, 1, sheet.getLastRow(), lastCol).getValues() //順に予定を作成 for (let i = 0; i <= lastRow - topRow; i++) { //「OK」の場合は無視する if (contents[i][statusNum] === "OK") { continue } // 値をセット 日時はフォーマットして保持 let startday = contents[i][startdayNum] let startTime = contents[i][startNum] let endday = contents[i][enddayNum] let endTime = contents[i][endNum] let title = contents[i][titleNum] try { // 終了日時を作成 if (endday == '') { endday = startday } // 開始終了時刻が無ければ終日で設定 if (startTime == '' || endTime == '') { //予定を作成 calender.createAllDayEvent( title, startday, // endday, options ) // 開始終了時刻があれば範囲で設定 } else { // 開始日時を作成 let startDate = new Date(startday) startDate.setHours(startTime.getHours()) startDate.setMinutes(startTime.getMinutes()) let endDate = new Date(endday) endDate.setHours(endTime.getHours()) endDate.setMinutes(endTime.getMinutes()) // 予定を作成 calender.createEvent( title, startDate, endDate, ) } //予定が作成されたら「OK」にする sheet.getRange(topRow + i, statusCellCol).setValue("OK") // エラーの場合ログ出力する } catch (e) { Logger.log(e) } } // 完了通知 Browser.msgBox("予定を追加しました。") }

よろしくお願いいたします。

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問