ChatGPT

初心者ガイド:PythonでTwitter自動投稿とGoogleスプレッドシートの連携!Googleスプレッドシートを活用して効率的にツイートする方法

「Tweepyって何?」「プログラミング知識がないけど、Twitter自動投稿できるの?」「ExcelデータをどうやってTwitterにアップするの?」と思っている方へ。この記事では、PythonのTweepyライブラリを使ってExcelスプレッドシートの内容をTwitterに投稿する方法を初心者にもわかりやすく解説します。

アイコン名を入力

・PythonやAPIがわからないけど、自動ツイートはできるのかな?
・GoogleスプレッドシートのデータをどうやってTwitterに連携させるの?
・プログラムのセットアップや認証プロセスが複雑そう…

こんな疑問に答えます。プログラムを自分で書くことができれば、汎用性がますので、より便利なツールを作成することができます。

記事の対象者

・プログラミング初心者
・ソーシャルメディアマネージャ
・デジタルマーケティング担当者

YouTubeに動画で内容説明をしているので、ご確認ください。プログラムの全文は4章に最後に記載しています。

🚀 0円で現役エンジニアから学べる【Techスクールオンライン】のお申込みをお勧めします。 このオンラインスクールでは、現役のエンジニアから直接学ぶことができ、プログラミングの基礎から高度なスキルまでを習得できます。しかも、今なら 0円 で受講できるチャンスです。 エンジニア転職を考えている方やプログラミングに興味がある方、新しいスキルを習得したい方に特におすすめです。

第1章: プログラムの概要

この章では、Pythonを利用してGoogleスプレッドシートのデータを読み込み、それを基にTwitterで自動的にツイートするプログラムについて詳しく説明します。このプログラムは、ソーシャルメディアの管理を効率化するための素晴らしいツールです。

プログラムの目的と機能:

このプログラムの主な目的は、Googleスプレッドシートに保存されたテキストを自動的にTwitterに投稿することです。特に、以下のような機能を持っています:

  1. スプレッドシートの認証とアクセス: Googleスプレッドシートにアクセスするための認証を行い、データを読み込む。
  2. Twitterの認証: Twitter APIを利用するための認証を行う。
  3. データの読み込みとツイート: スプレッドシートからデータを読み込み、指定された条件に基づいてツイートする。

使用する技術とライブラリ:

このプログラムでは、以下の技術とライブラリが用いられます:

  • Python: 効率的かつ読みやすいコードを書くためのプログラミング言語。
  • tweepy: Python用のTwitter APIラッパーで、Twitterの機能を簡単に利用できる。
  • gspread: Python用のGoogleスプレッドシートAPIラッパーで、スプレッドシートの操作を容易にする。
  • oauth2client: OAuth 2.0認証を行い、Googleのサービスに安全にアクセスするためのライブラリ。

プログラムの流れは下記になります。

プログラムの流れ
  1. Googleスプレッドシートの認証: authenticate_google_sheets 関数を使用して、指定されたJSONキーファイルをもとに認証を行います。
  2. Twitterの認証: authenticate_twitter 関数を用いて、提供されたAPIキーを使ってTwitterへの認証を行います。
  3. ツイートの投稿: post_tweets_from_spreadsheet 関数がスプレッドシートのデータを読み込み、未ツイートのデータがあればTwitterに投稿します。

では必要なライブラリと認証プロセスを紹介します。

第2章: 必要なライブラリと認証プロセス

プログラムを実行するためには、いくつかの外部ライブラリを利用する必要があります。また、GoogleスプレッドシートとTwitterへの安全なアクセスを保証するために、認証プロセスを理解することが重要です。

必要なライブラリ:

このプログラムを実行するために必要な主要なライブラリは以下の通りです:

  1. tweepy: TwitterのAPIにアクセスし、ツイートを投稿するために使用します。
  2. gspread: Googleスプレッドシートのデータを操作するために使用します。
  3. oauth2client: Google APIへの認証を行うために使用します。

これらのライブラリは、Pythonのパッケージマネージャーを使って簡単にインストールできます。

認証プロセス:


安全にAPIにアクセスするためには、適切な認証プロセスが必要です。このプログラムでは、以下の二つの認証プロセスを行います:

  1. Googleスプレッドシートへの認証:
    • authenticate_google_sheets 関数を使用して行います。
    • Google Cloud Platformで生成したJSONキーファイルを使い、OAuth2クライアントIDを取得します。
    • この認証により、プログラムはGoogleスプレッドシートに安全にアクセスできるようになります。
  2. Twitterへの認証:
    • authenticate_twitter 関数を用いて行います。
    • Twitter Developerアカウントから取得したAPIキー、APIシークレットキー、アクセストークン、アクセストークンシークレットを使用します。
    • これにより、プログラムはTwitterアカウントでツイートを投稿するための認証を行えます。

事前準備(Twitter のAPI取得・スプレッドシートのAPI設定)

こちらについては、下記リンクを参照し、事前にTwitterのAPI取得と、スプレッドシートのAPIを有効化し、サービスアカウントを設定して下さい。

第3章: スプレッドシートとTwitterの連携

この章では、Googleスプレッドシートのデータを読み込んでTwitterにツイートとして投稿するプロセスを詳しく説明します。この連携は、ソーシャルメディアの管理を自動化し、効率化するための鍵となります。

スプレッドシートからのデータ読み込み:

プログラムはまず、authenticate_google_sheets 関数を使用してGoogleスプレッドシートにアクセスします。次に、指定されたスプレッドシートを開き、必要なデータが含まれているシートを選択します。ここでの主な目的は、ツイートするためのテキスト情報を含む行を抽出することです。
スプレッドシートにはまずファイル名称をつけて下記のように保存します。B列にChatGPTに関する、ツイート文・C列にPythonに関するツイート文・D列に電子工作に関するツイート文を作成し、記載しておきます。すべて、ChatGPTがすぐに考えてくれます。
また、E列にツイート日時を記載しており、Pythonでプログラムを実行し、ツイートが完了したら、日時が記載されるようになっています。
スプレッドシートは、プログラムから内容が見れるように、事前に3章の事前準備を実施してください。サービスアカウントを取得し、共有化しておく必要があります。

Twitterへの投稿:

次に、authenticate_twitter 関数を用いてTwitter APIにアクセスし、Twitterクライアントを初期化します。プログラムはスプレッドシートから取得したデータを用いて、ツイートを生成し、Twitterに投稿します。投稿が成功した場合、プログラムはスプレッドシートにツイートの状態(例: 投稿日時)を更新します。E列に投稿日時を更新します。

自動化のメリット:

この連携により、手動でTwitterに投稿する手間が省け、事前にスケジュールされた投稿を自動的に管理できます。また、スプレッドシートを使用することで、ツイートの内容を簡単に編集・管理できる利点もあります。

第4章: プログラムコードの解説

この章では、Googleスプレッドシートのデータを読み込み、それをTwitterに投稿するプログラムのコードを詳しく解説します。プログラミング初心者にも理解しやすいように、重要な関数とプロセスをステップバイステップで分解して説明します。

1. Googleスプレッドシートの認証関数:


authenticate_google_sheets関数は、Googleスプレッドシートにアクセスするための認証を行います。この関数は、OAuth2の認証メカニズムを使用し、提供されたJSONキーファイルを使って認証情報を生成します。

def authenticate_google_sheets(json_keyfile_name):
    scope = ['https://spreadsheets.google.com/feeds', 'https://www.googleapis.com/auth/drive']
    credentials = ServiceAccountCredentials.from_json_keyfile_name(json_keyfile_name, scope)
    gc = gspread.authorize(credentials)
    return gc

ここでのポイントは、適切なスコープ(この場合はGoogleスプレッドシートとGoogleドライブ)の指定と、認証情報の生成です。

2. Twitterの認証関数:


authenticate_twitter関数は、TwitterのAPIにアクセスするために必要な認証を行います。この関数では、APIキーとシークレット、アクセストークンとトークンシークレットを使用して、Twitterクライアントを初期化します。

def authenticate_twitter(consumer_key, consumer_secret, access_token, access_token_secret):
    client = tweepy.Client(consumer_key=consumer_key, consumer_secret=consumer_secret, access_token=access_token, access_token_secret=access_token_secret)
    return client

この関数は、Twitter APIとの通信を許可するために必要な認証情報をセットアップします。

3. スプレッドシートからツイートを投稿する関数:


post_tweets_from_spreadsheet関数は、プログラムの中心的な部分です。この関数はスプレッドシートのデータを読み込み、ツイートとしてTwitterに投稿します。

def post_tweets_from_spreadsheet(json_keyfile_name, spreadsheet_name, consumer_key, consumer_secret, access_token, access_token_secret):
    # GoogleスプレッドシートとTwitterの認証
    gc = authenticate_google_sheets(json_keyfile_name)
    worksheet = gc.open(spreadsheet_name).sheet1
    twitter_client = authenticate_twitter(consumer_key, consumer_secret, access_token, access_token_secret)

    # スプレッドシートからデータを読み込み、ツイートする
    all_records = worksheet.get_all_records()
    for record in all_records:

ここでは、スプレッドシートからデータを取得し、それを基にツイートを生成しています。また、ツイート後にスプレッドシートを更新する処理も含まれています。

プログラム全文がこちらになります。プログラムでは、事前に取得したTwitterのAPI key, secret, Access tokenを自分のものに修正してください。また、JSON形式のファイルを同じディレクトリに保存し、pathに設定してください。

import tweepy
import gspread
from oauth2client.service_account import ServiceAccountCredentials
from datetime import datetime

def authenticate_google_sheets(json_keyfile_name):
    scope = ['https://spreadsheets.google.com/feeds', 'https://www.googleapis.com/auth/drive']
    credentials = ServiceAccountCredentials.from_json_keyfile_name(json_keyfile_name, scope)
    gc = gspread.authorize(credentials)
    return gc

def authenticate_twitter(consumer_key, consumer_secret, access_token, access_token_secret):
    client = tweepy.Client(consumer_key=consumer_key, consumer_secret=consumer_secret, access_token=access_token, access_token_secret=access_token_secret)
    return client

def post_tweets_from_spreadsheet(json_keyfile_name, spreadsheet_name, consumer_key, consumer_secret, access_token, access_token_secret):
    gc = authenticate_google_sheets(json_keyfile_name)
    worksheet = gc.open(spreadsheet_name).sheet1
    twitter_client = authenticate_twitter(consumer_key, consumer_secret, access_token, access_token_secret)

    # セルA1から行を読み込み、未ツイートのデータをツイートする
    all_records = worksheet.get_all_records()
    for index, record in enumerate(all_records):
        if record.get('ツイート日時'):
            continue

        tweet_count = 0
        for col in ['ChatGPT', 'Python', '電子工作']:
            tweet = record.get(col)
            if tweet:
                twitter_client.create_tweet(text=tweet)
                tweet_count += 1
        
        if tweet_count > 0:
            # 少なくとも1件のツイートが行われた場合、日時を記録
            worksheet.update_cell(index + 2, 5, datetime.now().strftime('%Y-%m-%d %H:%M:%S'))
            break  # ツイート処理後にループを終了

# スプレッドシートのJSONキーファイル、名前、Twitter APIキーを設定
json_keyfile_name = './JSONファイルの名称'
spreadsheet_name = 'スプレッドシートのファイル名称'
consumer_key = 'Your API Key (Twitter)'
consumer_secret = 'Your API Key Secret(Twitter)'
access_token = 'Your Access token'
access_token_secret = 'Your Access token_secret'



# 現在の時刻を取得
current_time = datetime.now().time()

post_tweets_from_spreadsheet(json_keyfile_name, spreadsheet_name, consumer_key, consumer_secret, access_token, access_token_secret)

第5章: プログラムの実行結果

プログラムを実行すると、下記のようにTwitterでスプレッドシートでまだ投稿していない3件が投稿される様子が確認できます。Windowsの場合は、タスクスケジューラとこのプログラムを設定することで、スプレッドシートの内容を指定した時間に自動でツイートすることが可能になります。

🚀 0円で現役エンジニアから学べる【Techスクールオンライン】のお申込みをお勧めします。 このオンラインスクールでは、現役のエンジニアから直接学ぶことができ、プログラミングの基礎から高度なスキルまでを習得できます。しかも、今なら 0円 で受講できるチャンス。
私がツナグバに登録してから、求人情報が豊富に届き、自分に合った仕事を見つけることができました。特に、第二新卒向けの求人情報が多いので、自分のスキルや経験を活かしながら新たなキャリアに挑戦することができました。転職活動は不安も多いですが、ツナグバのサポートがあれば、成功への道が明るく感じました。