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 件のコメント:
コメントを投稿