前提・実現したいこと
あるサイトから情報を取得し、その情報をもとにGoogleカレンダーでイベントを作成するコードを書いています。
カレンダーのイベントを作成するコードを実行すると同じ内容のイベントが6つも作成されてしまいます。
回避するにはどのようにしたらいいでしょうか。
ご教授いただけると幸いです。
よろしくお願いいたします。
発生している問題・エラーメッセージ
特になし
該当のソースコード
1function sendGameInfo() { 2 var url, mail; 3 var html; 4 var stadium 5 //翌翌週の日曜日の試合情報を取得するアドレスを設定する 6 var next2sun = getnext2Sunday() 7 var address = setAddress(next2sun) 8 9 //情報を取得 10 html = UrlFetchApp.fetch(address).getContentText("shift-jis"); 11 var parse = Parser.data(html); 12 var stadium_data = Parser.data(html).from('<tr class="schedule-index">').to('</tr>').iterate(); 13 var prestadium = stadium_data[0].replace(/<("[^"]*"|'[^']*'|[^'">])*>/g,'').replace(/\s+/g, ""); 14 var cut_posi = prestadium.search("(") 15 stadium = prestadium.slice(0,cut_posi) 16 var part1 = Parser.data(html).from('<td align="right" class="schedule-index">').to('</td>').iterate(); 17 var part2 = Parser.data(html).from('<td align="center" class="schedule-index">').to('</td>').iterate(); 18 var num = part1.length; 19 20 21 22 var kari 23 var list_time=[] 24 for (var ij=0;ij<num;ij++){ 25 26 kari = makeTime(part1[ij],next2sun) 27 list_time.push(kari) 28 29 } 30 31 var elements = arrangeGameInfo(part2) 32 elements['time'] = list_time[elements['flag']] 33 elements['location'] = stadium 34 //試合がないときは何も処理をしない 35 if(elements['flag']==-1){ 36 } 37 //試合があるときはカレンダーで連絡する 38 else if(elements['flag']!=-1){ 39 40 //スプレッドシートからメンバーの一覧を取得する 41 var ssheet,sheet,member 42 ssheet = SpreadsheetApp.getActiveSpreadsheet() 43 sheet = ssheet.getSheetByName('MemberList') 44 var range = sheet.getRange('C2:C').getValues() 45 member = Array.prototype.concat.apply([], range).filter(Boolean) 46 47 var c_title,c_startTime,c_endTime,competitor,body,options 48 c_title = "試合"+":"+elements['competition'] 49 c_startTime = new Date(new Date(elements['time']).setHours(new Date(elements['time']).getHours()-1)) 50 c_endTime = new Date(new Date(elements['time']).setHours(new Date(elements['time']).getHours()+2)) 51 52 if(elements['top_team'] == "チーム名"){ 53 54 competitor = elements['bot_team'] 55 56 }else if(elements['bot_team'] == "チーム名"){ 57 58 competitor = elements['top_team'] 59 60 } 61 62 body = "相手:"+competitor+"\n"+ 63 "ボール:"+elements['ball']+"\n"+ 64 "集合:"+Utilities.formatDate(c_startTime,"JST","HH:mm")+"\n"+ 65 "試合:"+elements['time'].substr(-5,5) 66 67 options = {guset:mail, 68 description:body, 69 location:stadium} 70 //ここで1回しか実行されないはずが6回実行されています。回避策を教えていただきたいです。 71 CalendarApp.getCalendarById("asics.com_n962uf6279chmgdajrbho682ug@group.calendar.google.com").createEvent(c_title, c_startTime, c_endTime, options) 72 73 } 74 Logger.log(elements) 75} 76
試したこと
同じタイトルのイベントが複数あった場合は1つを残して削除する、などのコードを試しましたがそもそもなぜこのようなことになるか知りたくて質問しました。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
あなたの回答
tips
プレビュー