はじめに
「毎朝、今日の株価をチームのチャットに自動で投稿できたら便利だな…」と思ったことはありませんか?
この記事では、Google Apps Script (GAS) とGoogleスプレッドシートを使って、日経平均株価の情報を自動で取得し、Google Chatに通知する方法を、プログラミング初心者の方でも分かるように解説します。
毎日決まった時間に、以下のような通知を自動で受け取れるようになります。
この記事で得られること
GoogleスプレッドシートのGOOGLEFINANCE関数で株価を取得する方法
Google ChatのIncoming Webhookの設定方法
GASを使ってスプレッドシートの情報を読み取り、Google Chatに送信する方法
作成したプログラムを毎日自動で実行する方法
必要なもの
Googleアカウント
Googleスプレッドシート、Google Apps Script、Google Chatを利用します。特別なインストールの必要はありません。
手順1:Googleスプレッドシートで株価を取得する
まずは、日経平均株価の情報を取得するためのスプレッドシートを準備します。
新しいGoogleスプレッドシートを開きます。(sheet.new にアクセスすると便利です)
ファイル名を「日経平均株価通知」など、分かりやすい名前に変更します。
以下の通り、各セルに関数を入力します。
A1セル: =GOOGLEFINANCE("INDEXNIKKEI:NI225", "price")
B1セル: =GOOGLEFINANCE("INDEXNIKKEI:NI225", "change")
C1セル: =GOOGLEFINANCE("INDEXNIKKEI:NI225", "changepct")
入力すると、以下のように現在の株価情報が表示されるはずです。(数値は実行時のものです)
A B C
1 40,123.45 -150.23 -0.37
これで株価を取得するシートの準備は完了です。
手順2:Google ChatでWebhook URLを取得する
次に、GASからメッセージを投稿するための「Webhook URL」をGoogle Chatで取得します。
通知を飛ばしたいGoogle Chatの「スペース」を開きます。
スペース名の横にある ▼ をクリックし、「アプリと統合」を選択します。
「Webhookを追加」をクリックします。
Webhookの名前を入力します(例:「株価通知ボット」)。アバターのURLは任意で設定できます。
「保存」をクリックすると、https://chat.googleapis.com/v1/spaces/... から始まるURLが生成されます。
このURLの右側にあるコピーボタンをクリックして、URLを控えておきます。このURLは外部に漏れないように注意して扱ってください。
手順3:Google Apps Script (GAS) を書く
いよいよGASでプログラムを書いていきます。
先ほど作成したスプレッドシートに戻り、メニューから「拡張機能」>「Apps Script」を選択します。
GASのエディタが開くので、コード.gsなどのファイルに、元々書かれているコードをすべて消して、以下のコードを貼り付けます。
// ▼▼▼【要設定】手順2で取得したWebhook URLをここに貼り付け▼▼▼
const WEBHOOK_URL = 'ここに取得したWebhook URLを貼り付けてください';
// ▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲
/**
* 日経平均株価の情報を取得し、Google Chatに投稿する関数
*/
function postNikkeiAverageToGoogleChat() {
// 連携しているスプレッドシートの最初のシートを取得
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
// 各セルの値を取得
const price = sheet.getRange('A1').getDisplayValue(); // 現在値
const change = sheet.getRange('B1').getDisplayValue(); // 前日比
const changePct = sheet.getRange('C1').getDisplayValue(); // 前日比(%)
// 前日比がプラスかマイナスかで絵文字と色を変える
let sign = '';
let color = '#000000'; // デフォルトは黒
const changeValue = parseFloat(change); // 文字列を数値に変換
if (changeValue > 0) {
sign = '📈';
color = '#008000'; // プラスなら緑
} else if (changeValue < 0) {
sign = '📉';
color = '#FF0000'; // マイナスなら赤
}
// Google Chatに送信するメッセージ(カード形式)を組み立てる
const payload = {
'cardsV2': [{
'cardId': 'nikkei-average-card',
'card': {
'header': {
'title': '日経平均株価',
'subtitle': '定時通知',
'imageUrl': 'https://upload.wikimedia.org/wikipedia/commons/thumb/3/32/Nikkei_225.svg/320px-Nikkei_225.svg.png',
'imageType': 'CIRCLE'
},
'sections': [{
'widgets': [{
'decoratedText': {
'topLabel': '現在値',
'text': `<font color="${color}">${price} 円</font>`,
'startIcon': {
'knownIcon': 'DOLLAR'
}
}
}, {
'decoratedText': {
'topLabel': '前日比',
'text': `<font color="${color}">${sign} ${change} 円 (${changePct}%)</font>`,
'startIcon': {
'knownIcon': 'CHART_UP'
}
}
}]
}]
}
}]
};
// 実際にGoogle Chatへメッセージを送信する
const options = {
'method': 'post',
'contentType': 'application/json; charset=UTF-8',
'payload': JSON.stringify(payload)
};
try {
UrlFetchApp.fetch(WEBHOOK_URL, options);
} catch (e) {
// エラーが発生した場合にログを出力
Logger.log(`Error sending message to Google Chat: ${e.message}`);
}
}
コードを貼り付けたら、WEBHOOK_URLの 'ここに取得したWebhook URLを貼り付けてください' の部分を、手順2でコピーしたご自身のWebhook URLに書き換えます。
フロッピーディスクのアイコン(プロジェクトを保存)をクリックして、スクリプトを保存します。
postNikkeiAverageToGoogleChat関数が選択されていることを確認し、「実行」ボタンをクリックします。
初回実行時には「承認が必要です」というダイアログが表示されます。「権限を確認」をクリックし、ご自身のGoogleアカウントを選択します。
「このアプリはGoogleで確認されていません」という警告が出ることがありますが、「詳細」をクリックし、「(プロジェクト名)(安全ではないページ)に移動」をクリックして許可してください。
スプレッドシートや外部への接続を許可する画面が表示されるので、「許可」をクリックします。
実行が完了すると、指定したGoogle Chatのスペースに株価情報が投稿されるはずです!
手順4:トリガーを設定して自動化する
最後に、このスクリプトを毎日決まった時間に自動で実行するための「トリガー」を設定します。
GASエディタの左側にある時計のアイコン(トリガー)をクリックします。
右下の「トリガーを追加」ボタンをクリックします。
以下の通りに設定します。
実行する関数を選択: postNikkeiAverageToGoogleChat
実行するデプロイを選択: Head
イベントのソースを選択: 時間主導型
時間ベースのトリガーのタイプを選択: 日付ベースのタイマー
時刻を選択: 通知したい時刻を選択します(例: 午前8時~9時)
通知設定: エラーが発生した場合の通知頻度を任意で設定します。
「保存」をクリックします。
これで、毎日設定した時刻に自動で日経平均株価がGoogle Chatに投稿されるようになります。平日の取引時間開始後(例: 午前9時〜10時)や、取引終了後(例: 午後3時〜4時)に設定するのがおすすめです。
まとめ
今回は、GASとGoogleスプレッドシートを連携させて、日経平均株価をGoogle Chatに自動通知する方法をご紹介しました。
GOOGLEFINANCE関数は、日経平均だけでなく、NYダウ(".DJI")や個別株(例: TYO:9984)、為替(例: "CURRENCY:USDJPY")など、さまざまな金融商品に対応しています。今回のコードを少し応用するだけで、いろいろな情報をチームに共有する仕組みが簡単に作れます。
ぜひ、この仕組みをカスタマイズして、日々の業務効率化に役立ててみてください!
