Tooleyの工房

役に立つ技術製作中?

PDFの図表をGoogle Spread Sheetにpythonに書き込ませる

皆さんこんにちは。管理人のTooleyです。
今回はPythonだけ使ってPDFの図表をGoogle Spread Sheetに書き込むのを自動化してみます。
これをそっくりそのまままねると多分エラー起こると思うので参考程度にみてくださいね。
じゃあ、やりましょう。
やることはGoogle APIの設定、SpreadSheetの設定、GoogleDriveアプリ版のダウンロード,ファイルの値の設定です。
GoogleAPIの設定についてはこちらの方が非常に丁寧に解説しているので参考にしてください。
Pythonでスプレッドシートからデータを読み込むのところから上のとこは一通りやりましょう。
www.twilio.com

ではgoogleスプレッドシートのidを獲得しましょう。
Spreadsheetのファイルの真ん中のとこ(リンクの/d/から/editのとこ)をクリックするとちょうどよく指定できるんでコピーしておきましょう。
そしたらGoogle Driveのアプリ版をインストールしてみましょう。
www.google.com
できたらいよいよプログラミングです!以下のコマンドをコマンドプロンプトで一個一個打ち込みましょう。ちなみにpythonは元々インストールしてある前提です。

pip install tabula-py
pip install schedule
pip install gspread
pip install oauth2client
pip install pandas

ではpythonファイルを書きます。とりあえずサクッとこんな感じに描いてみました。

import pandas as pd 
import tabula
import gspread
from google.oauth2.service_account import Credentials
from gspread_dataframe import set_with_dataframe
import glob
import os
import datetime
import schedule
import time
import time
import os
import sys
files = glob.glob("Google Driveの保存したいファイルがある場所のパス*.pdf")
scope = ['https://www.googleapis.com/auth/spreadsheets','https://www.googleapis.com/auth/drive']
credentials = Credentials.from_service_account_file("JSONファイルのパス", scopes=scope)
SPREADSHEET_KEY = 'スプレッドシートのキー'
gc = gspread.authorize(credentials)
workbook = gc.open_by_key(SPREADSHEET_KEY)
worksheets = workbook.worksheets()

for file in files:
    dfs = tabula.read_pdf(file, stream=True, pages='all')
    filename = os.path.splitext(os.path.basename(os.path.abspath(file)))[0]
    for df in dfs:
        try:
            worksheet = workbook.add_worksheet(title=filename + "のデータ",rows=str(df.shape[0] + 1),cols=str(df.shape[1] + 1))
            set_with_dataframe(worksheet, df, resize=False, include_index = True)
        except:
            print()

こんな感じです。楽しんでいただけたら管理人としても嬉しいです。

ではまた。