🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Google スプレッドシート

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

Google カレンダー

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

Google Apps Script

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

Q&A

解決済

1回答

4219閲覧

スプレッドシートとgoogleカレンダー連携

Daiki1270

総合スコア12

Google スプレッドシート

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

Google カレンダー

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

Google Apps Script

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

0グッド

0クリップ

投稿2020/01/04 15:09

GASでスプレッドシート からGoogleカレンダーに予定を追加するコードを書いているのですが、シートの取得が上手くいきません。
ファイル名(スケジュール)の中から二番目のシート(googleカレンダー連携)に記述した内容をGoogleカレンダーにGASで入力したいです。

GAS

1コード 2/** 3 * スプレッドシート表示の際に呼び出し 4 */ 5function onOpen() { 6 7 var ss = SpreadsheetApp.getActiveSpreadSheet(); 8 9 //スプレッドシートのメニューにカスタムメニュー「カレンダー連携 > 実行」を作成 10 var subMenus = []; 11 subMenus.push({ 12 name: "実行", 13 functionName: "createSchedule" //実行で呼び出す関数を指定 14 }); 15 ss.addMenu("カレンダー連携", subMenus); 16} 17 18/** 19 *予定を作成する 20 */ 21 function creatschedule() { 22 23 //連携するアカウント 24 const gAccount = "xxxxxxxxx@gmail.com"; // 25 26 //読み取り範囲(表の始まり行と終わり列) 27 const topRow = 6; 28 const lastCol = 9; 29 30 //0始まりで列を指定しておく 31 const statusCellNum = 1; 32 const dayCellNum = 2; 33 const startCellNum = 4; 34 const endCellNum = 5; 35 const titleCellNum = 6; 36 const locationCellNum = 7; 37 const descriptionCellNum = 8; 38 39 // シートを取得 40 var sheet = SpreadsheetApp.getSheetByName(googleカレンダー連携); 41 42 43 // 予定の最終行を取得 44 var lastRow = sheet.getLastRow(); 45 46 // 予定の一覧を取得 47 var contents = sheet.getRange(topRow, 1, sheet.getLastRow(), lastCol).getValues(); 48 49 // googleカレンダーの取得 50 var calendar = CalendarApp.getCalendarById(gAccount); 51 52 //順に予定を作成(今回は正しい値が来ることを想定) 53 for (i = 0; i <= lastRow - topRow; i++) { 54 55 // 「済」っぽいのか、空の場合は飛ばす 56 var status = contents[i][statusCellNum]; 57 if ( 58 status == "済" || 59 status == "済み" || 60 status == "OK" || 61 contents[i][dayCellNum] == "" 62 ) { 63 continue; 64 } 65 66 // 値をセット 日時はフォーマットして保存 67 var day = new Date(contents[i][dayCellNum]); 68 var startTime = contents[i][startCellNum]; 69 var endTime = contents[i][endCellNum]; 70 var title = contents[i][titleCellNum]; 71 // 場所と詳細をセット 72 var option = {location: contents[i][locationCellNum], description: contents[i][descriptionCellNum]}; 73 74 try { 75 // 開始終了がなければ終日で設定 76 if (startTime == '' || endTime == '') { 77 //予定を作成 78 calendar.createAllDayEvent( 79 title, 80 new Date(day), 81 options 82 ); 83 84 //開始終了時間があれば範囲で設定 85 } else { 86 // 開始日時をフォーマット 87 var startDate = new Date(day); 88 startDate.setHours(startTime.getHours()) 89 startDate.setMinutes(startTime.getMinutes()); 90 // 終了日時をフォーマット 91 endDate.setHours(endTime.getHours()) 92 endDate.setMinutes(endTime.getMinutes()); 93 // 予定を作成 94 calendar.createEvent( 95 title, 96 startDate, 97 endDate, 98 options 99 ); 100 } 101 102 // 無事に予定が作成されたら「済」にする 103 sheet.getRange(topRow + i, 2).setValue("済"); 104 105 // エラーの場合(今回はログ出力のみ) 106 } catch(e) { 107 Logger.log(e); 108 } 109 110 } 111 // ブラウザへ完了通知 112 Browser.msBox("完了"); 113 }

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

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

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

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

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

papinianus

2020/01/06 22:56

上手くいかない、はどういう事態を指してますか?コードは読まずに質問してます。
guest

回答1

0

ベストアンサー

こうですか?

javascript

1var sheet = SpreadsheetApp.getSheetByName("googleカレンダー連携");

投稿2020/01/06 22:59

papinianus

総合スコア12705

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

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

Daiki1270

2020/01/19 02:09

ありがとうございます! 解決致しました。 以降のコードもミスがあったので、修正したら動きました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問