ドーモ!ぬま畑です!
本記事では、指定した語句(言葉)を元にニュースのタイトルと内容を自動で取得し、Googleスプレッドシートに記載する方法を解説します。使用するプログラミング言語はPythonです。
さらに、指定した時間に基づいて自動的に取得する仕組みも紹介します。できるだけ無料のツールを使って実現することを目指します。
それではさっそく行きましょう!
1. ニュースAPIの取得
まずは、ニュースを取得するために NewsAPI を利用します。NewsAPI は無料プランでも多くの機能が使えます。
- NewsAPI のウェブサイトにアクセスして、アカウントを作成します。
- ダッシュボードから API キーをコピーしておきます。このキーは後で Python スクリプトで使用します。
2. Pythonを使ったニュース取得スクリプトの作成
次に、Python を使ってニュースを取得するスクリプトを作成します。requests
ライブラリを使って NewsAPI からデータを取得します。
まず、requests
ライブラリをインストールします。
pip install requests
次に、以下のスクリプトを作成し、fetch_news.py
という名前で保存します。
import requests
def fetch_news(api_key, query, language=“ja”):
url = “https://newsapi.org/v2/everything”
params = {
“q”: query,
“apiKey”: api_key,
“language”: language
}
response = requests.get(url, params=params)
return response.json()
3. Google スプレッドシート API の設定
- Google Developers Console にアクセスし、新しいプロジェクトを作成します。
- プロジェクトのダッシュボードに移動し、”ライブラリ” をクリックして、”Google Sheets API” を検索し、有効化します。
- “認証情報” をクリックし、”認証情報を作成” を選択して、”サービスアカウント” を作成します。
- サービスアカウントを作成したら、JSON 形式のキーをダウンロードします。このキーは後で Python スクリプトで使用します。
- Google スプレッドシートを作成し、先ほど作成したサービスアカウントのメールアドレスに編集権限を付与します。スプレッドシートの URL から ID をメモしておきます。
4. スプレッドシートへの記載スクリプトの作成
次に、取得したニュースを Google スプレッドシートに記載するスクリプトを作成します。google-auth
と google-api-python-client
ライブラリを使ってスプレッドシートにアクセスします。
まず、必要なライブラリをインストールします。
pip install google-auth google-auth-oauthlib google-auth-httplib2 google-api-python-client
次に、以下のスクリプトを作成し、write_to_spreadsheet.py
という名前で保存します。
from google.oauth2 import service_account
from googleapiclient.discovery import build
def write_to_spreadsheet(sheet_id, json_keyfile, data):credentials = service_account.Credentials.from_service_account_file(json_keyfile, scopes=[“https://www.googleapis.com/auth/spreadsheets”])
service = build(“sheets”, “v4”, credentials=credentials)body = {
“range”: “A1”,
“values”: data,
“majorDimension”: “ROWS”
}request = service.spreadsheets().values().append(
spreadsheetId=sheet_id,
range=“A1”,
valueInputOption=“USER_ENTERED”,
body=body
)
response = request.execute()
return response
5. 定期実行の設定
最後に、スクリプトを定期的に実行する設定を行います。以下の手順で、スケジュールされたタスクを作成します。
- タスクスケジューラ(Windows)または
cron
(Linux、macOS)を開きます。 - 新しいタスクを作成し、実行するスクリプトとして
fetch_news.py
とwrite_to_spreadsheet.py
を指定します。 - トリガーを設定し、指定した時間にスクリプトが実行されるようにします。
これで、指定した語句を元にニュースのタイトルと内容を自動的に取得し、スプレッドシートに記載する仕組みができました。指定した時間にスクリプトが実行されるように設定されているので、新しいニュースが常に取得され、スプレッドシートに追加されます。
最後に、main.py
というファイルを作成して、先ほど作成した fetch_news.py
と write_to_spreadsheet.py
を組み合わせて使用しましょう。
from fetch_news import fetch_news
from write_to_spreadsheet import write_to_spreadsheet
# NewsAPI の API キーnews_api_key = “YOUR_NEWS_API_KEY”
# Google スプレッドシートの ID と JSON キーsheet_id = “YOUR_SPREADSHEET_ID”
json_keyfile = “YOUR_JSON_KEYFILE”
# 検索するキーワードquery = “指定した語句”
def main():# ニュースを取得
news_data = fetch_news(news_api_key, query)
# ニュースをスプレッドシートに記載するデータ形式に整形
formatted_data = []
for article in news_data[“articles”]:
title = article[“title”]
content = article[“content”]
formatted_data.append([title, content])
# スプレッドシートにデータを書き込む
write_to_spreadsheet(sheet_id, json_keyfile, formatted_data)
if __name__ == “__main__”:
main()
上記のスクリプトにある YOUR_NEWS_API_KEY
、YOUR_SPREADSHEET_ID
、YOUR_JSON_KEYFILE
は、それぞれ取得した NewsAPI の API キー、Google スプレッドシートの ID、サービスアカウントの JSON キーに置き換えてください。
これで、main.py
を定期実行することで、指定した語句に基づいてニュースのタイトルと内容を自動で取得し、スプレッドシートに記載する仕組みが完成しました。定期実行の設定で main.py
を指定すれば、スケジュールされたタスクが問題なく実行されます。
これで、指定したキーワードに基づいてニュースを自動的に取得し、Google スプレッドシートに記載する仕組みができました。定期的に実行されるように設定されているため、新しいニュースが常に取得され、スプレッドシートに追加されます。
あとがき
いかがでしたでしょうか?
さらに、上記の仕組みをカスタマイズして、以下のような機能を追加することができます。
- 複数のキーワードに対応: 複数のキーワードをリストで指定し、それぞれのキーワードに基づいてニュースを取得することができます。これにより、興味のあるトピックを網羅的に追跡することができます。
- 異なるニュースソースの使用: NewsAPI 以外のニュースソースを利用することができます。例えば、GNewsAPI や Bing News Search API など、他の API も検討してみてください。これにより、さらに多様なニュースを取得することができます。
- メールやチャットアプリへの通知: スプレッドシートに記載するだけでなく、取得したニュースをメールやチャットアプリ(Slack、Microsoft Teams など)に自動的に通知することもできます。これにより、リアルタイムでニュースをチェックすることができます。
- データ分析や可視化: スプレッドシートに記載されたニュースデータを利用して、さまざまな分析や可視化を行うことができます。例えば、トピックごとの記事数の推移や、特定のキーワードの出現頻度などをグラフで表示することができます。これにより、トレンドや興味のある情報を簡単に把握することができます。
これらのアイデアを参考に、自分だけのニュース取得システムをカスタマイズして、最新の情報を効率的に収集できるようにしましょう。
それでは、最後までお読み頂きありがとうございましたノシ
[Twitter]
ツイッターもやってるんでよろしければフォローお願いしますm(_ _)m
※フォローしていただければ記事の更新時にツイート(通知)しますので他の記事やレビューが見たいという方はフォローください!
↓↓↓↓↓
[stand.fm]
またstandFMもやっているので興味ある方はどうぞ!
※ビジネス書評や時々思ったこと、更に映画のこと、様々なレビューを語っています。
↓↓↓↓↓