gas の他サービス連携
google apps scriptはgoogle内のサービスだけでなく、他サービスと連携して情報を取得したり通知を送ったりできます。
連携する為のライブラリーやサービスが用意されており、ソースもそこまで書く必要がなくトークンIDを指定すればすぐ使えます
gas を使うメリット
・環境を作る必要がない
・何処からでも実行可能
・トリガー設定して定期的な実行も可能
googleカレンダーの情報を取得
◆カレンダーIDを取得
・googleカレンダーを開き、「設定」画面を開く
・「マイカレンダーの設定」の「カレンダー統合」をクリック
【gas側】
・calendarIdの部分に先ほどのidをコピペ
function getCalendar() {
const calendarId = 'xxxxxxxxx';// カレンダーID
let calendar = CalendarApp.getCalendarById(calendarId);
var targetDay = new Date();
var events = calendar.getEventsForDay(targetDay);
for (key in events) {
event = events[key];
var message = event.getTitle() + '(' + event.getStartTime().getHours() + ':' + event.getStartTime().getMinutes() + '~' + event.getEndTime().getHours() + ':' + event.getEndTime().getMinutes() + '分)';
console.log(message);
}
}
slackに通知
【slack側】
・botのappを作成
https://api.slack.com/apps
・上記にアクセスし、「Create New App」をクリック
・「Form Scratch 」を選択し、botの名前と使用するworkspaceを選択する
・作成したbotを選択し、左のメニューの「OAuth&Permissions」をクリック
・Scopes の「Add an OAuth Scope」をクリックして「chat:write」「chat:write.customize」「chat:write.public」を追加し、botに書き込み権限を与える
【gas側の設定】
・gasのライブラリーにslackのライブラリーを追加
・下記で検索します
1on93YOYfSmV92R5q59NpKmsyWIQD8qnoLYk-gkQBI92C58SPyA2x1-bq
・スクリプトを追加して、先ほど作成したbotのトークンIDをtokenIdにコピペします
function sendSlack() {
const tokenId = 'xoxb-xxxxxxxxxxxxxxxxxxxxxxxxxx';//トークンID
const channelId = '#general'; // slackのチャンネルID
let slackApp = SlackApp.create(tokenId);
var message = 'gasからテスト通知';
slackApp.postMessage(channelId, message);
}
chatworkに通知
apiトークンをコピー※トークンを発行していない場合は発行してください
先ほどの要領で、gas側のライブラリーにchatworkのライブラリーを追加
1nf253qsOnZ-RcdcFu1Y2v4pGwTuuDxN5EbuvKEZprBWg764tjwA5fLav
先ほどのトークンIDと通知したいルームIDを指定(urlの「#!rid」の後ろについているID)
function sendChatwork() {
const tokenId = 'xxxxxxxxxxxxx'; // トークンID
const roomId = 999999999; // ルームID
var message = 'gasからテスト通知';
var client = ChatWorkClient.factory({token: tokenId});
client.sendMessage({room_id: roomId, body: message});
}
discordに通知
・先ほど作成したウェブフックのurlをコピペ
function sendDiscord() {
const discordWebHookURL = 'https://discord.com/api/webhooks/9999999999/xxxxxxxxxxxxxxx';// ウェブフックURL
var message = 'gasからテスト通知';
UrlFetchApp.fetch(discordWebHookURL, { 'method': 'POST','headers': { 'Content-type': 'application/json' },'payload': JSON.stringify({'content': message,'tts': false})});
}
youtubeの情報を取得
・gasのサービスからYouTube Data apiを追加
・調査したいチャンネルidを指定する
function getYutube() {
const channelId = 'xxxxxxxxxxxxxxxxxxxxxxxx'; //チャンネルId
let results = YouTube.Channels.list('snippet,statistics', { id: channelId });
let items = results.items[0];
let statistics = items.statistics;
console.log('チャンネル名=' + items.snippet.title + ' 登録者数=' + statistics.subscriberCount + ' 全動画数=' + statistics.videoCount + ' 全再生数=' + statistics.viewCount);
}