0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【GAS】コピペで簡単!日経平均株価をGoogle Chatに毎日自動通知する方法

0
Last updated at Posted at 2025-10-14

スクリーンショット 2025-10-14 145105.png

はじめに

「毎朝、今日の株価をチームのチャットに自動で投稿できたら便利だな…」と思ったことはありませんか?

この記事では、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")など、さまざまな金融商品に対応しています。今回のコードを少し応用するだけで、いろいろな情報をチームに共有する仕組みが簡単に作れます。

ぜひ、この仕組みをカスタマイズして、日々の業務効率化に役立ててみてください!

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?