天気予報をLINEbotに通知するGASスクリプトを書きました。
// LINE Message API チャネルアクセストークン
const LINE_ACCESS_TOKEN = "【Channel access token (long-lived)を記載】";
//ユーザーIDを指定
const LINE_USER_ID = "【Your user IDを記載】";
// 通知用のLINE API
const PUSH_API = "https://api.line.me/v2/bot/message/push";
const WEATHER_APP_ID = "【openweatherIDを記載】";
const LAT = 34.672314;
const LON = 135.484802;
// 天気予報情報取得API;
const WEWATHER_API = `https://api.openweathermap.org/data/2.5/onecall?lat=${LAT}&lon=${LON}&units=metric&lang=ja&appid=${WEATHER_APP_ID}`
Logger.log(WEWATHER_API);
/**
* push
* botからメッセージを送る
*/
function doPost() {
const date = Utilities.formatDate(new Date(), 'Asia/Tokyo', 'yyyy/MM/dd HH:mm');
Logger.log(date);
// リクエストヘッダ
const headers = {
"Content-Type" : "application/json; charset=UTF-8",
"Authorization" : "Bearer " + LINE_ACCESS_TOKEN
};
// メッセージ
let weatherInfo = getWeather();
const postData = {
"to" : LINE_USER_ID,
"messages" : [
{
"type" : "text",
"text" : `現在の大阪の日時とお天気をお伝えします🐻時刻: ${ weatherInfo.datetime }, 天気: ${ weatherInfo.weather }, 気温: ${ weatherInfo.temp }, 湿度: ${ weatherInfo.humidity }☀君の心はいつも晴れ☀いってらっしゃーい🐻`
}
]
};
Logger.log(postData);
// POSTオプション作成
const options = {
"method" : "POST",
"headers" : headers,
"payload" : JSON.stringify(postData)
};
return UrlFetchApp.fetch(PUSH_API, options);
}
function unixtimeToDatetime(unixtime) {
const date = new Date(unixtime * 1000);
return Utilities.formatDate(date, 'Asia/Tokyo', 'YY/MM/dd HH:mm');
}
function getWeather() {
// @ts-ignore
let res = JSON.parse(UrlFetchApp.fetch(WEWATHER_API));
let current = res.current;
let unixtime = unixtimeToDatetime(Number(current.dt));
weatherInfo = {
"datetime": unixtime,
"weather": current.weather[0].description,
"icon": current.weather[0].icon,
"temp": Math.round(current.temp),
"humidity": current.humidity
};
return weatherInfo;
}
コメント