GASの初心者ですがよろしくお願いします。
グーグルカレンダーから予定を取得し、JSONデータにするというものを書いていたのですが、カレンダーのタイトルから()で囲まれた文字列を消したいのでspliceを使ったところ、TypeError: オブジェクト (名前)予定 で関数 splice が見つかりません。
というエラーが出ました。
ちなみに「(名前)予定」はテスト用にカレンダーに入れた予定のタイトルで、今回は「(名前)」の部分を消そうとしています。
GASもspliceもあまり使ったことがなく、調べつつ使ってみたもののどの書き方が悪いのか等全くわからず詰まってしまいました。どなたかご教授いただけると嬉しいです。
よろしくお願いします。
.
以下コードになります。
function doGet(e) { // クエリパラメーター「name」で指定された、Googleカレンダー取得対象のユーザーの名前を取得する。 //var name = e.parameter.name; // 現時点のDateを生成する var nowDate = new Date(); // 今日の日付の00:00:00時点のDateを生成する var startDate = new Date(nowDate); startDate.setHours(0); startDate.setMinutes(0); startDate.setSeconds(0); // 今日の日付の23:59:59時点のDateを生成する var endDate=new Date(startDate); endDate.setHours(23); endDate.setMinutes(59); endDate.setSeconds(59); // 指定したユーザーのGoogleカレンダーの予定を取得する。 var cal = CalendarApp.getCalendarById('gmailアドレス'); // 今日一日のGoogleカレンダーの予定を取得する var myEvents=cal.getEvents(startDate,endDate); // 今日一日のGoogleカレンダーのJSONを生成する。 var body = ''; num = 0; var result = []; var fullTitle = ''; var evtTitle = ''; //予定が現在時刻に重なっている //タイトルに名前が含まれている //以上の場合にJSONに追加 for each(var evt in myEvents){ fullTitle = evt.getTitle(); var start = fullTitle.indexOf('('); var end = fullTitle.indexOf(')'); end = end - start; if(start != -1 && end != -1){ evtTitle = fullTitle.splice(start, end); } if(Moment.moment(evt.getStartTime()).isBefore(nowDate.getTime()) && Moment.moment(evt.getEndTime()).isAfter(nowDate.getTime())){ result[num] = { start: convertDate(evt.getStartTime()), end: convertDate(evt.getEndTime()), title: evt.getTitle() } num++; } } return ContentService .createTextOutput(JSON.stringify(result)) .setMimeType(ContentService.MimeType.JSON); } function convertDate(date) { //moment.jsで日付の形式を合わせる(上記コメントアウトとやってることは一緒。便利) return Utilities.formatDate(date, 'JST', 'yyyy-MM-dd HH:mm:ss'); } function toDoubleDigits(num) { num += ""; if (num.length === 1) { num = "0" + num; } return num; }
回答2件
あなたの回答
tips
プレビュー