はじめに:この仕組みでできること
株の配当金について、手動で追うのは大変ですよね。アプリだと最近の銘柄が追加されていなかったり、スクロールが大変だったりするため、なるべく自動で更新してくれて、見やすいような仕組みを作成していこうと思います。
ここでは Python と Googleスプレッドシートを使って、最新の配当金や株価を自動で取得し、更新できるようにします。
参考として、実際に私が利用しているスプレッドシートのテンプレートを共有しておきます。
今回自動で取得する範囲は以下となります。ティッカーを入力してPythonスクリプトを実行することで、以下の情報をスプレッドシートに自動で入力してくれるようにします。
企業名 | 最新配当金 | 年間配当 | 配当月 | 株価 | 利回り |

手順の概要
今回配当金の情報取得を自動化するために実施する手順の概要は、以下となります。
- Google Cloud Console にログイン
- プロジェクトを作成
- Google Sheets API と Google Drive API を有効化
- サービスアカウントを作成
- 「認証情報」として JSON形式の
credentials.json
をダウンロード
- Googleスプレッドシートを新規作成(名前は例:配当金シート)
- A1列にヘッダー(ティッカー)を入力
- Google Cloud の認証ファイルにあるメールアドレスをこのシートに「編集者」として共有
pip install yfinance gspread oauth2client
Finance.py
としてPythonファイルを作成- 上記ライブラリを使って,
yfinance
で配当金,gspread
でGoogle Sheets連携 - A列に入力されたティッカーをもとに,最新の配当金,株価,配当月,利回りを算出
- A2以降に例:
AAPL
,MSFT
,KO
などを入力 - スクリプトを実行すると,対応するB列以降に配当情報が自動表示
Step 1:Google Cloudで認証情報を取得
① Google Cloud Console にアクセス
Google Cloud Console にアクセスし、Googleアカウントでログインします。

② プロジェクトを作成
- 左上の「≡ メニュー」から「IAMと管理」→「プロジェクトを作成」を選択
- 任意のプロジェクト名(例:配当金管理)を入力して作成
左上のメニューを選択


プロジェクト名に任意の名前を入力して、作成をクリック

③ API を有効化
- 「APIとサービス」→「ライブラリ」を開く
- 「Google Sheets API」と「Google Drive API」を検索して有効化します
左上のメニューを選択

「APIとサービス」⇒「ライブラリ」の順番でクリックします。

「Google Sheets API」と「Google Drive API」をそれぞれ検索して、有効化していきます。



④ サービスアカウントを作成
- 「IAMと管理」→「サービスアカウント」から「サービスアカウントを作成」をクリック
- 名前(例:spreadsheet-access)を入力し、「作成して続行」
- 権限はそのままスキップして完了
「IAMと管理」⇒「サービスアカウント」の順番でクリックします。

「+サービスアカウントを作成」をクリックします。

サービスアカウント名を入力して、作成して続行をクリックします。
(サービスアカウントIDは、アカウント名を入力すると自動で入力されます。)

権限については、今回は設定不要のためスキップして、そのまま完了をクリックします。

作成したアカウントが表示されていることを確認します。

⑤ JSON形式の認証ファイルをダウンロード
- 作成されたサービスアカウントの詳細画面を開く
- 「鍵」タブ → 「鍵を追加」 → 「新しい鍵を作成」 →
JSON
を選択してダウンロード
→credentials.json
という名前で保存します
🔒 ダウンロードされたJSONファイルは絶対に他人に共有しないよう注意してください!
作成したアカウントをクリックします。

上のタブで、「鍵」をクリックします。
次に表示された「キーを追加」⇒「新しい鍵を作成」の順番でクリックします。

キーのタイプはJSONを選択して、作成をクリックします。

秘密鍵が作成され、ダウンロードフォルダにファイルが格納されます。

ダウンロードされた鍵情報が記載されたファイルは、後ほどcredentials.json
としてPythonスクリプトと同じフォルダに保存して利用します。
Step 2:Googleスプレッドシートを作成、共有
- Googleスプレッドシート にアクセスして、新しいスプレッドシートを作成します。
- スプレッドシートの名前を「配当金管理」に設定します。
- A1 セルに「ティッカー」、B1 に「最新配当金」など、必要なヘッダーを入力しておきます。
- 実際に私が利用しているスプレッドシートのテンプレートを共有しておきます。
- Step 1で作成したサービスアカウントのメールアドレス(
xxx@project-id.iam.gserviceaccount.com
形式)を、スプレッドシートの「共有」から「編集者」として追加します。 - これにより、Pythonスクリプトがスプレッドシートを読み書きできるようになります。





Step 3:Python環境を準備し、ライブラリをインストール
Python がインストールされていない場合は、公式サイト からインストールしてください。インストール後、以下のコマンドを実行します:
pip install yfinance gspread oauth2client
上記のコマンドで以下のライブラリがインストールされます:
yfinance
: 株価や配当金データを取得するためgspread
: Googleスプレッドシートを操作するためoauth2client
: Google認証用ライブラリ
インストールが完了したら、次のステップでスクリプトを作成していきます。
Step 4:Pythonスクリプトの設定
Finance.py
としてPythonファイルを作成
以下のコードをコピーして、Finance.pyという名前で保存します。
ファイルを格納するフォルダは任意のフォルダをで問題ありません。
import gspread
from oauth2client.service_account import ServiceAccountCredentials
import yfinance as yf
import pandas as pd
from datetime import datetime, timezone, timedelta
import re
# Google Sheets 認証
scope = ["https://spreadsheets.google.com/feeds", "https://www.googleapis.com/auth/drive"]
creds = ServiceAccountCredentials.from_json_keyfile_name("credentials.json", scope)
client = gspread.authorize(creds)
# スプレッドシートを開く
spreadsheet = client.open("配当金管理") # スプレッドシート名
worksheet = spreadsheet.sheet1
# ティッカー取得(1行目除外)
tickers = worksheet.col_values(1)[1:]
# ヘッダー更新
headers = [["企業名", "最新配当金", "年間配当", "配当月", "株価", "利回り"]]
worksheet.update(values=headers, range_name="B1:G1")
def validate_ticker(ticker):
"""ティッカーシンボルの検証
Returns:
tuple: (valid_ticker, is_japanese)
- valid_ticker: 検証済みのティッカーシンボル
- is_japanese: 日本株の場合はTrue
"""
# 空白を除去して大文字に変換
ticker = ticker.strip().upper()
# 日本株のパターン(4桁の数字、.Tの有無は問わない)
if re.match(r'^\d{4}(\.T)?$', ticker):
# .Tが付いていない場合は追加
if not ticker.endswith('.T'):
ticker = f"{ticker}.T"
return ticker, True
# 米国株のパターン(大文字アルファベットのみ)
if re.match(r'^[A-Z]+$', ticker):
return ticker, False
return None, None
def get_exchange_rate():
"""USD/JPYの為替レートを取得"""
try:
usdjpy = yf.Ticker("JPY=X")
rate = usdjpy.info.get("regularMarketPrice", 0)
return rate
except Exception as e:
print(f"為替レートの取得に失敗: {str(e)}")
return 0
# 為替レートを取得
exchange_rate = get_exchange_rate()
print(f"現在の為替レート: 1USD = {exchange_rate}JPY")
data = []
for idx, ticker in enumerate(tickers, start=2):
try:
# ティッカーシンボルの正規化と検証
valid_ticker, is_japanese = validate_ticker(ticker)
if not valid_ticker:
print(f"無効なティッカーシンボル: {ticker} (日本株: 4桁の数字、米国株: 大文字アルファベット)")
data.append(["無効なティッカー", "", "", "", "", ""])
continue
print(f"Processing {valid_ticker} ({'日本株' if is_japanese else '米国株'})...")
stock = yf.Ticker(valid_ticker)
info = stock.info
# 企業名の取得(日本語名を優先)
name = info.get("longName", info.get("shortName", "不明"))
# 株価の取得
price = info.get("currentPrice", 0)
# 配当金の取得
dividends = stock.dividends
if not dividends.empty:
# 最新の配当金(ilocを使用)
latest_div = dividends.iloc[-1]
# 過去1年間の配当金合計
one_year_ago = datetime.now(timezone.utc) - timedelta(days=365)
annual_div = dividends[dividends.index >= one_year_ago].sum()
# 配当月(重複除去)
months = ",".join(str(m) for m in sorted(set([i.month for i in dividends.index])))
else:
latest_div = 0
annual_div = 0
months = "-"
# 日本株の場合、配当金をドルに変換
if is_japanese and exchange_rate > 0:
latest_div = latest_div / exchange_rate
annual_div = annual_div / exchange_rate
# 利回り計算
yield_ratio = f"{round((annual_div / price) * 100, 2)}%" if price else "-"
# データを追加
data.append([
name,
round(latest_div, 2),
round(annual_div, 2),
months,
round(price, 2),
yield_ratio
])
except Exception as e:
print(f"Error processing {ticker}: {str(e)}")
data.append(["取得失敗", "", "", "", "", ""])
# スプレッドシートに出力(新しい構文を使用)
if data:
worksheet.update(values=data, range_name="B2")
Finance.py
と同じフォルダに、Step1⑤でダウンロードしたファイルをcredentials.json
として保存
Finance.pyを保存出来たら、Step1⑤でダウンロードした鍵情報が保存されたファイルを「credentials.json」という名前で同じフォルダに保存します。
Step 5:スプレッドシートにティッカーを入力,実行
- A2以降に例:
AAPL
,MSFT
,KO
などを入力 - 以下のコマンドで、スクリプトを実行すると,対応するB列以降に配当情報が自動表示
python Finance.py
Pythonスクリプトを実行することで、作成したスプレッドシートに以下の情報が自動で入力されるはずです。
企業名 | 最新配当金 | 年間配当 | 配当月 | 株価 | 利回り |
コメント