【GAS×LINEmessagingAPI】비 예보 BOT를 만들어 보았다! ! !
15989 단어 YOLPLINEmessagingAPI날씨gas
소개
저는 유학을 계기로 프로그래밍을 배우기 시작한 이계대학생입니다.
전회 오늘의 예정이나 날씨를 가르쳐 주는 챗봇을 작성했습니다만, 아는 사람이나 intee의 강사로부터 현재지로부터 비 예보를 가르쳐 주는 것이 있으면 편리하다고 하는 어드바이스를 받고, 전회 배운 지식을 응용하면 구현할 수 있다고 생각했기 때문에 작성했습니다.
프로그래밍 초보자이므로 코멘트에서 조언 등이 있으면 매우 기쁩니다! !
마지막 기사는 여기 .
API 목록
이미지
LINE에는 위치 정보를 전송하는 기능이 있으므로 위치 정보에서 위도 경도를 취득하고 그것을 사용하여 YOLP에 요청을 보내 비 정보를 취득한다.
절차
코드
메인 처리
// LINE developersのアクセストークン
var ACCESS_TOKEN = '';
function doPost(e) {
// WebHookで受信した応答用Token
var replyToken = JSON.parse(e.postData.contents).events[0].replyToken;
// 位置情報から緯度経度を取得
var lat = JSON.parse(e.postData.contents).events[0].message.latitude;
var lon = JSON.parse(e.postData.contents).events[0].message.longitude;
// 応答メッセージ用のAPI URL
var url = 'https://api.line.me/v2/bot/message/reply';
var text = '';
// 位置情報かそれ以外かで処理を分ける
if(JSON.parse(e.postData.contents).events[0].message.type === 'location'){
text = main(lat, lon);
}else{
}
UrlFetchApp.fetch(url, {
'headers': {
'Content-Type': 'application/json; charset=UTF-8',
'Authorization': 'Bearer ' + ACCESS_TOKEN,
},
'method': 'post',
'payload': JSON.stringify({
'replyToken': replyToken,
'messages': [{
'type': 'text',
'text': text,
}],
}),
});
return ContentService.createTextOutput(JSON.stringify({'content': 'post ok'})).setMimeType(ContentService.MimeType.JSON);
}
강우량 취득
function main(lat, lon){
//YOLPのID
var appId = '';
var place = lon + "," + lat;
//リクエストURL
var url_yahoo = "https://map.yahooapis.jp/weather/V1/place?coordinates=" + place + "&output=json&appid=" + appId;
var response_rain = UrlFetchApp.fetch(url_yahoo);
var json_rain = JSON.parse(response_rain.getContentText());
var scr = '';
var text = "";
//YOLPで1時間後まで雨量取得
for(var i=1; i<7; i++){
if(json_rain['Feature'][0]['Property']['WeatherList']['Weather'][i]['Rainfall'] > 0.00){
var time = json_rain['Feature'][0]['Property']['WeatherList']['Weather'][i]['Date'];
var rainfall_time = time.split('');
scr += rainfall_time[8] + rainfall_time[9] + '時' + rainfall_time[10] + rainfall_time[11] + '分に' + json_rain['Feature'][0]['Property']['WeatherList']['Weather'][i]['Rainfall'] + 'mm/h' + 'の雨が降るようです。' + '\n';
}
}
//降る場合と降らない場合
if(scr.length > 0){
//見た目をよくする
var scr1 = scr.slice(0, -1);
text += scr1;
}else{
text += '1時間以内に雨は降らないようです。';
}
return text;
}
완성된 것
요약
조언을 받고 거기에서 새로운 것을 만들어낸 경험은 컸다.
이 경험을 또 다음에 살리고 싶습니다.
또, 이번 작성한 것으로는 비의 정보 밖에 얻을 수 없기 때문에, 다른 API를 찾아 기능을 추가해 보다 좋은 것으로 해 가고 싶습니다.
원한다면 여러분도 사용해보십시오! ! !
마지막으로, 뭔가 조언이 있으면 잘 부탁드립니다!
Reference
이 문제에 관하여(【GAS×LINEmessagingAPI】비 예보 BOT를 만들어 보았다! ! !), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/asahi1998/items/ed27b8eef868b46c2b56
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
// LINE developersのアクセストークン
var ACCESS_TOKEN = '';
function doPost(e) {
// WebHookで受信した応答用Token
var replyToken = JSON.parse(e.postData.contents).events[0].replyToken;
// 位置情報から緯度経度を取得
var lat = JSON.parse(e.postData.contents).events[0].message.latitude;
var lon = JSON.parse(e.postData.contents).events[0].message.longitude;
// 応答メッセージ用のAPI URL
var url = 'https://api.line.me/v2/bot/message/reply';
var text = '';
// 位置情報かそれ以外かで処理を分ける
if(JSON.parse(e.postData.contents).events[0].message.type === 'location'){
text = main(lat, lon);
}else{
}
UrlFetchApp.fetch(url, {
'headers': {
'Content-Type': 'application/json; charset=UTF-8',
'Authorization': 'Bearer ' + ACCESS_TOKEN,
},
'method': 'post',
'payload': JSON.stringify({
'replyToken': replyToken,
'messages': [{
'type': 'text',
'text': text,
}],
}),
});
return ContentService.createTextOutput(JSON.stringify({'content': 'post ok'})).setMimeType(ContentService.MimeType.JSON);
}
function main(lat, lon){
//YOLPのID
var appId = '';
var place = lon + "," + lat;
//リクエストURL
var url_yahoo = "https://map.yahooapis.jp/weather/V1/place?coordinates=" + place + "&output=json&appid=" + appId;
var response_rain = UrlFetchApp.fetch(url_yahoo);
var json_rain = JSON.parse(response_rain.getContentText());
var scr = '';
var text = "";
//YOLPで1時間後まで雨量取得
for(var i=1; i<7; i++){
if(json_rain['Feature'][0]['Property']['WeatherList']['Weather'][i]['Rainfall'] > 0.00){
var time = json_rain['Feature'][0]['Property']['WeatherList']['Weather'][i]['Date'];
var rainfall_time = time.split('');
scr += rainfall_time[8] + rainfall_time[9] + '時' + rainfall_time[10] + rainfall_time[11] + '分に' + json_rain['Feature'][0]['Property']['WeatherList']['Weather'][i]['Rainfall'] + 'mm/h' + 'の雨が降るようです。' + '\n';
}
}
//降る場合と降らない場合
if(scr.length > 0){
//見た目をよくする
var scr1 = scr.slice(0, -1);
text += scr1;
}else{
text += '1時間以内に雨は降らないようです。';
}
return text;
}
요약
조언을 받고 거기에서 새로운 것을 만들어낸 경험은 컸다.
이 경험을 또 다음에 살리고 싶습니다.
또, 이번 작성한 것으로는 비의 정보 밖에 얻을 수 없기 때문에, 다른 API를 찾아 기능을 추가해 보다 좋은 것으로 해 가고 싶습니다.
원한다면 여러분도 사용해보십시오! ! !
마지막으로, 뭔가 조언이 있으면 잘 부탁드립니다!
Reference
이 문제에 관하여(【GAS×LINEmessagingAPI】비 예보 BOT를 만들어 보았다! ! !), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/asahi1998/items/ed27b8eef868b46c2b56
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(【GAS×LINEmessagingAPI】비 예보 BOT를 만들어 보았다! ! !), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/asahi1998/items/ed27b8eef868b46c2b56텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)