犬、猫、キツネの画像をAPIで取得し、Slackに投稿するGoogle Apps Scriptです。なんか疲れたので作りました。癒やされたい方、いかがですか?
特にありません。
スプレッドシートのコンテナバインド型として作成していますが、スタンドアロン型で実装いただいても構いません。
Slackと連携するために、「Incoming Webhook」を使用します。
GASからSlackに投稿するための「入り口」を作ります。
詳しい手順はこちらをご確認ください。
https://myfunc.jp/items/00066/index.html
Webhook URLが発行されたら完了です。このURLをスクリプトの事前設定エリアにある「slack_webhook_url」にセットしましょう。
事前設定が終わったら関数「onOpen」を一度実行して権限の承認をします。
スプレッドシートに戻るとメニューが増えているはずです。
上のメニューにある「スクリプト実行」から「犬・猫・狐の画像をSlackに投稿する」を実行します。
Incoming Webhookを設定したチャンネルにメッセージが届いていれば成功です。
癒やされますねぇ・・・・癒やしとは程遠い画像が届くことも稀によくあります。
あとはトリガーをセットすれば好きなだけ癒やされることが可能ですね!
/**
* このスクリプトの説明、使い方はこちら。
* https://myfunc.jp/items/00132/index.html
*/
function onOpen() {
// スプレッドシートを開いたときに実行される関数
// UIの取得
const ui = SpreadsheetApp.getUi()
// メニューの表示名
const menu = ui.createMenu('スクリプト実行');
// メニューに追加するボタン
menu.addItem('犬・猫・狐の画像をSlackに投稿する', 'send_dog_cat_fox_image_to_slack');
// メニューを画面に追加する
menu.addToUi();
}
function send_dog_cat_fox_image_to_slack() {
// ######### 事前設定ここから ########
// SlackのWebhook URLを入力してください
const slack_webhook_url = 'https://hooks.slack.com/services/*****************';
// ######### 事前設定ここまで ########
// 犬、猫、狐の画像を取得するAPIをランダムで選択するため、0〜2の間の乱数を生成する
const random_number = Math.floor(Math.random() * 3);
// 使用する変数を宣言
let url, content, json, image_url;
// 乱数を使用して各APIから画像URLを取得する
switch (random_number) {
case 0:
// 犬画像APIから画像URLを取得
// https://dog.ceo/dog-api/
url = 'https://dog.ceo/api/breeds/image/random';
content = UrlFetchApp.fetch(url).getContentText('UTF-8');
json = JSON.parse(content);
image_url = json['message'];
break;
case 1:
// 猫画像APIから画像URLを取得
// https://aws.random.cat/view/1
url = 'https://aws.random.cat/meow';
content = UrlFetchApp.fetch(url).getContentText('UTF-8');
json = JSON.parse(content);
image_url = json['file'];
break;
case 2:
// 狐画像APIから画像URLを取得
// https://randomfox.ca/
url = 'https://randomfox.ca/floof/';
content = UrlFetchApp.fetch(url).getContentText('UTF-8');
json = JSON.parse(content);
image_url = json['image'];
break;
}
// SlackのWebhook URLに投稿するデータをまとめる
const json_slack =
{
'username': '癒やされアニマルBot',
'icon_emoji': ':relaxed:',
'text': image_url
};
// SlackのWebhook URLに送信するデータをJSONに変換する
const payload = JSON.stringify(json_slack);
// UrlFetchAppで使用するメソッドやコンテントタイプを指定
const options =
{
'method': 'post',
'contentType': 'application/json',
'payload': payload
};
// Slackに送信
UrlFetchApp.fetch(slack_webhook_url, options);
}