LoginSignup
2
1

More than 1 year has passed since last update.

gas(google apps script)で他サービスと連携する

Last updated at Posted at 2022-09-14

gas の他サービス連携

google apps scriptはgoogle内のサービスだけでなく、他サービスと連携して情報を取得したり通知を送ったりできます。
連携する為のライブラリーやサービスが用意されており、ソースもそこまで書く必要がなくトークンIDを指定すればすぐ使えます

gas を使うメリット

・環境を作る必要がない
・何処からでも実行可能
・トリガー設定して定期的な実行も可能

googleカレンダーの情報を取得

◆カレンダーIDを取得
・googleカレンダーを開き、「設定」画面を開く
image.png
・「マイカレンダーの設定」の「カレンダー統合」をクリック
image.png

・カレンダーIDの部分をコピー
image.png

【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」をクリック
image.png

・「Form Scratch 」を選択し、botの名前と使用するworkspaceを選択する
image.png

・作成したbotを選択し、左のメニューの「OAuth&Permissions」をクリック
image.png

・Scopes の「Add an OAuth Scope」をクリックして「chat:write」「chat:write.customize」「chat:write.public」を追加し、botに書き込み権限を与える
image.png

・トークンIDをコピーする
image.png

【gas側の設定】
・gasのライブラリーにslackのライブラリーを追加
image.png

image.png

・下記で検索します
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に通知

右上の自分のアイコンをクリックして「サービス連携」を選択
image.png

apiトークンをコピー※トークンを発行していない場合は発行してください
image.png

先ほどの要領で、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に通知

・通知したいチャンネルの設定ボタンをクリック
image.png

・ウェブフックを作成し、urlをコピー
image.png

・先ほど作成したウェブフックの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を追加
image.png

image.png

・調査したいチャンネル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);
}

動画での説明はこちら↓

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1