GASエディタの開き方
1. ログインして下記URLにアクセスhttps://script.google.com2. GoogleDriveから[新規]→[その他]→[Google App Script]
GASでWebAPIの作り方
1. 「今から10分ではじめる Google Apps Script(GAS) で Web API公開」にしたがってWebAPIを作成する。https://qiita.com/riversun/items/c924cfe70e16ee3fe3ba2. 「GASでwebアプリの作成とパラメータの確認方法(doGet、doPost)」ではPOSTメソッドの作り方の説明がある。
https://breezegroup.co.jp/201906/gas-get/要約すると,POSTメソッドもGETメソッドと作り方は同じ
データはe.parameterで受け取る
例) e.parameter: {name=白い巨匠, hobby=カラオケ}下記はPOSTメソッドの受け渡しデータの例(webapi_sample03)
例)http://172.16.108.7/~mtanaka/googleappscript/doPost.html
{ "e": { "parameter": { "text": "こんにちは" }, "contextPath": "", "contentLength": 50, "queryString": "", "parameters": { "text": [ "こんにちは" ] }, "postData": { "type": "application/x-www-form-urlencoded", "length": 50, "contents": "text=%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF", "name": "postData" } } }下記はGETメソッドの受け渡しデータの例(webapi_sample03)
{ "e": { "parameter": { "text": "Hello" }, "contextPath": "", "contentLength": -1, "queryString": "text=Hello", "parameters": { "text": [ "Hello" ] } }, "parameter": { "text": "Hello" } }
テスト用サイト
http://172.16.108.7/~mtanaka/googleappscript/
CalendarApp
http://google-apps-script.net/instructions/?p=249
■イベントの作成
下記の関数はイベントの作成と色の設定を行っている。function createEvents() { var calendar = CalendarApp.getDefaultCalendar(); var title = '夜のお薬の時間です'; var startTime = new Date(); var endTime = new Date(); endTime.setMinutes(endTime.getMinutes() + 30); var option = { description: 'クラビット細粒10% 100mg', location: '医療法人 オルカ医院' } // イベントを登録 var event = calendar.createEvent(title, startTime, endTime, option); // 色を設定(赤色) 色は数字で指定する event.setColor(11); // idを取得 var id = event.getId(); // idを保存 var properties = PropertiesService.getScriptProperties(); properties.setProperty("id", id); }下記の関数はイベントの色を更新している
function setEventColor() { // イベントidを取得 var properties = PropertiesService.getScriptProperties(); var id = properties.getProperty("id"); Logger.log(id); // 色を設定 var event = CalendarApp.getEventById(id); event.setColor(10); }
WebAPIテストプログラム
1.イベント登録(Formバージョン)HTML:http://172.16.108.250/~mtanaka/googleappscript/createEvent.html
GAS:webapi_googleCal_createEvent
URL(POST):https://script.google.com/macros/s/AKfycbx-mSe7................wbw7OW0y/exec
// // Google calendarにイベントを登録する // // https://script.google.com/macros/s/AKfycbx-mSe7................wbw7OW0y/exec function doPost(e) { var parameter = e.parameter; var eventData = { 'title': parameter.title, 'description': parameter.description, 'location': parameter.location, 'color': parameter.color, } var id = createEvents(eventData); Logger.log('id=' + id); var result = { 'id': id } var out = ContentService.createTextOutput(); responseText = JSON.stringify(result); //Mime Typeをapplication/jsonに設定 out.setMimeType(ContentService.MimeType.JSON); //JSONPテキストをセットする out.setContent(responseText); return out; } // イベントの作成 function createEvents(eventData) { Logger.log('eventData=' + JSON.stringify(eventData)); var calendar = CalendarApp.getDefaultCalendar(); var title = eventData.title; var startTime = new Date(); var endTime = new Date(); endTime.setMinutes(endTime.getMinutes() + 30); var option = { description: eventData.description, location: eventData.location } // イベントを登録 var event = calendar.createEvent(title, startTime, endTime, option); // 色を設定(赤色) event.setColor(eventData.color); // idを取得 var id = event.getId(); return id; } function testCreateEvent() { var eventData = { 'title': '朝のお薬の時間です', 'description': 'クラビット細粒10% 100mg 3錠', 'location': '医療法人 川崎病院', 'color': 11, } var id = createEvents(eventData); Logger.log('id=' + id); }
2.当日のイベント取得(jQueryバージョン)
HTML:http://172.16.108.250/~mtanaka/googleappscript/getEventsForDay.html
GAS:webapi_googleCal_getEventsForDay
URL(GET):https://script.google.com/macros/s/AKfycbx9k....................ft27MA/exec
// // Google calendarからイベントを取得する // e.parameter.id ==null の場合は当日の全てのイベントを取得 // e.parameter.id !=null の場合は指定したidのイベントを取得 // // https://script.google.com/macros/s/AKfycbx9k....................ft27MA/exec function doGet(e) { var parameter = e.parameter; var eventData; // parameter.idが設定されていたらそのidのイベントを取得 if(parameter.id) { eventData = getEventById(parameter.id); } else { // そうでなければその日の全てのイベントを取得 eventData = getEventsForDay(); } responseText = JSON.stringify(eventData); Logger.log('responseText=' + responseText); var out = ContentService.createTextOutput(); //Mime Typeをapplication/jsonに設定 out.setMimeType(ContentService.MimeType.JSON); //JSONPテキストをセットする out.setContent(responseText); return out; } //当日の予定をすべて取得して返す function getEventsForDay() { var date = new Date(); var options = { 'search': 'お薬', }; var events = CalendarApp.getEventsForDay(date, options); var eventData = []; events.forEach(function(event){ var data = { 'title': event.getTitle(), 'description': event.getDescription(), 'id': event.getId(), 'location': event.getLocation(), 'startTime': event.getStartTime(), 'endTime': event.getEndTime(), 'color': event.getColor(), } eventData.push(data); Logger.log(JSON.stringify(data, null, ' ')); }); return eventData; } //指定されたidのイベントを取得して返す function getEventById(id) { var event = CalendarApp.getEventById(id); var eventData = { 'title': event.getTitle(), 'description': event.getDescription(), 'id': event.getId(), 'location': event.getLocation(), 'startTime': event.getStartTime(), 'endTime': event.getEndTime(), 'color': event.getColor(), } return eventData; }
[ { "title": "朝のお薬の時間です", "description": "クラビット細粒10% 100mg 3錠", "id": "t4s1bi3v05bhvcjp41rr89qulg@google.com", "location": "医療法人 川崎病院", "startTime": "2019-08-03T00:31:51.000Z", "endTime": "2019-08-03T01:01:51.000Z", "color": "11" }, { "title": "夜のお薬の時間です", "description": "クラビット細粒10% 100mg", "id": "v84ho65ceseoja7257s1moj1o8@google.com", "location": "医療法人 オルカ医院", "startTime": "2019-08-03T09:00:00.000Z", "endTime": "2019-08-03T09:30:00.000Z", "color": "11" } ]3.イベント登録(jQueryバージョン)
HTML:http://172.16.108.250/~mtanaka/googleappscript/createEventByjQuery.html
GAS:webapi_googleCal_createEvent
URL(POST):https://script.google.com/macros/s/AKfycbx-mSe....................bw7OW0y/exec
// // Google calendarにイベントを登録する // // https://script.google.com/macros/s/AKfycbx-mSe....................bw7OW0y/exec function doPost(e) { var parameter = e.parameter; var eventData = { 'title': parameter.title, 'description': parameter.description, 'location': parameter.location, 'color': parameter.color, } var id = createEvents(eventData); Logger.log('id=' + id); var result = { 'id': id } var out = ContentService.createTextOutput(); responseText = JSON.stringify(result); //Mime Typeをapplication/jsonに設定 out.setMimeType(ContentService.MimeType.JSON); //JSONPテキストをセットする out.setContent(responseText); return out; } // イベントの作成 function createEvents(eventData) { Logger.log('eventData=' + JSON.stringify(eventData)); var calendar = CalendarApp.getDefaultCalendar(); var title = eventData.title; var startTime = new Date(); var endTime = new Date(); endTime.setMinutes(endTime.getMinutes() + 30); var option = { description: eventData.description, location: eventData.location } // イベントを登録 var event = calendar.createEvent(title, startTime, endTime, option); // 色を設定(赤色) event.setColor(eventData.color); // idを取得 var id = event.getId(); return id; } function testCreateEvent() { var eventData = { 'title': '朝のお薬の時間です', 'description': 'クラビット細粒10% 100mg 3錠', 'location': '医療法人 川崎病院', 'color': 11, } var id = createEvents(eventData); Logger.log('id=' + id); }
0 件のコメント:
コメントを投稿