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

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

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

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

Google カレンダー

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

Google Apps Script

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

Q&A

解決済

1回答

2227閲覧

google app scriptのエラーの対処法教えてください

empty_colors031

総合スコア1

Google スプレッドシート

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

Google カレンダー

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

Google Apps Script

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

0グッド

0クリップ

投稿2021/03/31 03:24

前提・実現したいこと

ここに質問の内容を詳しく書いてください。
google app scriptでイベント一覧を作成しそこからカレンダーにイベント日時が出るようにしているのですがエラーが出て解決策が分かりません。初心者なため助けてください。ネット上のソース使い作成しています。メールアドレスのところは削除しています。

発生している問題・エラーメッセージ

Exception: Invalid argument: date_time <
time_ms: 0x175c24e516cd80
offset_ms: 32400000

time_zone: "Asia/Tokyo"

該当のソースコード

/* カレンダーへイベントを登録する */ function getsheet() { /*-前準備-*/    //シートの項目を以下変数定義      var sht, i, eventday, eventname, place,start, end, added;    //shtを定義     sht = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("sheet1");    //シートの2行目〜最終行まで処理を繰り返す     for(i = 2; i <= sht.getLastRow(); i++) { /*-前準備ここまで-*/ /*--スプレッドシートの値を取得して変数へ格納--*/ //i行1列目の値(イベント日)をeventdayへ格納  eventday = sht.getRange(i, 1).getValue(); //開始日をUtilities.formatDateでフォーマットしてbへ格納  var b = Utilities.formatDate(eventday,"JST","yyMMdd"); //i行2列目の値(イベントの名前)をeventnameへ格納  eventname = sht.getRange(i,2).getValue(); //i行3列目の値(イベントの場所)をplaceへ格納  place = sht.getRange(i,3).getValue(); //i行4列目の値(開始時刻)をstartへ格納  var starttime = sht.getRange(i,4).getValue();  var H = starttime.getHours();//starttimeの時間を取得してHへ格納  var M = starttime.getMinutes();//starttimeの時間を取得してMへ格納  var S = starttime.getSeconds();//starttimeの時間を取得してSへ格納 //new Dateメソッドで開始日時「yyMMdd hh:mm」をstartへ格納  var start = new Date(b+" "+H+":"+M+":"+S);  //i行5列目の値(終了時刻)をendへ格納  var endtime = sht.getRange(i,5).getValue();  var H1 = endtime.getHours();//endtimeの時間を取得してH1へ格納  var M1 = endtime.getMinutes();//endtimeの分を取得してM1へ格納  var S1 = endtime.getSeconds();//endtimeの秒を取得してS1へ格納 //new Dateメソッドで終了日時「yyMMdd hh:mm」をendへ格納  var end = new Date(b+" "+H1+":"+M1+":"+S1); /*--カレンダーへ登録--*/ //i行6列目の値(イベント登録有無)をaddedへ格納  added = sht.getRange(i,6).getValue(); //addedの値が空白だったらカレンダー登録を実行  if(added == "") {   Cal = CalendarApp.getCalendarById('');//<---ここを自分のgmailアドレスへ変更する //指定のカレンダーIDへインベント登録   Cal.createEvent(eventname,start,end,place);//createEvent(タイトル、開始日時、終了日時、オプション)

試したこと

//指定のカレンダーIDへインベント登録
Cal.createEvent(eventname,start,end,place);//createEvent(タイトル、開始日時、終了日時、オプション)
ここでエラーが出ています

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答1

0

ベストアンサー

var b = Utilities.formatDate(eventday,"JST","yyMMdd");

というコードで6ケタの数字の文字列が出来ますが
それを使って

var start = new Date(b+" "+H+":"+M+":"+S); 

でstartを作るとstartには6ケタの数字が年と解釈され
その1月1日となるようです。

それでエラーとなっているようですね。
ですので

var b = Utilities.formatDate(eventday,"JST","yyyy/MM/dd");

にするなどして、きちんと日時と解釈できる形にすればいいかと思います。

投稿2021/03/31 13:23

xail2222

総合スコア1508

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

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

empty_colors031

2021/03/31 23:12

いけました!ありがとうございます! 丁寧に教えていただき助かりました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問