LoginSignup
1
1

More than 1 year has passed since last update.

pythonでGoogleドライブのフォルダへ保存及びスプレッドシート書き込み【続】

Last updated at Posted at 2021-09-14

前回の続き

Googleドライブ側で下準備

pythonでGoogleドライブのフォルダ及びスプレッドシートを編集する場合、共有する必要があります。
ファイル右クリックで共有をクリックします。
pythonでGoogleドライブのフォルダ内にファイルを保存したり、スプレッドシートを作成して編集などをしたい場合は、そのフォルダを共有します。
特定のスプレッドシートしか読み書きしない場合はそのスプレッドシートを共有します。
image.png

GCPからダウンロードしてきたjsonファイルを開いてください。
pythonのプロジェクトフォルダ直下にあるはずです。
メモ帳やVSCodeなどで開いて大丈夫です。

"client_email": "~~~~~~~~~~~~~~~~@~~~~~~~~~~~~~~.iam.gserviceaccount.com"

↑この部分を探してください。
~~~~~~~~~~~~~~~~@~~~~~~~~~~~~~~.iam.gserviceaccount.comの部分だけコピーします。
そしてGoogleドライブの方での共有のメールアドレスを打ち込むところにペーストします。
image.png
図のようにクリックし、送信を押します。
image.png
これで下準備はできました。

python側

必要なライブラリをインストール

pip install gspread oauth2client pydrive
import os

import gspread
from oauth2client.service_account import ServiceAccountCredentials
from pydrive.auth import GoogleAuth
from pydrive.drive import GoogleDrive


JSON_PATH = os.path.join(os.getcwd(), "jsonファイル名.json")
# GoogleドライブのURLからIDを取ってきます。
FOLDER_ID = "~~~~~~~~~~~~~~~~~~~~~"
# 対象フォルダのIDはhttps://drive.google.com/drive/u/0/folders/以下
SHEET_ID = "~~~~~~~~~~~~~~~~~~~~~"
# スプレッドシートの場合https://docs.google.com/spreadsheets/d/ここがID/edit#gid=0

class Gspread:
    def __init__(self) -> None:
        self.workbook: Spreadsheet
        self.worksheet: Worksheet
        self.drive: GoogleDrive
        self.credentials: Any
        self.set_gspread()

    def set_gspread(self):
        scope = [
            "https://spreadsheets.google.com/feeds",
            "https://www.googleapis.com/auth/drive",
        ]
        self.credentials = ServiceAccountCredentials.from_json_keyfile_name(
            JSON_PATH , scope
        )
        gauth = GoogleAuth()
        gauth.credentials = self.credentials
        self.drive = GoogleDrive(gauth)

    # フォルダにファイルを保存してみる
    def save_file(self) -> None:
        f = self.drive.CreateFile({"parents": [{"id": FOLDER_ID}]})
        f.SetContentFile("パスとファイル名")
    # Googleドライブのフォルダに保存したファイルを命名
        f["title"] = "ファイル名"
        f.Upload()

    # スプレッドシートを開く
    def open_sheet_by_(self):
        gc = gspread.authorize(self.credentials)
        # スプレッドシートを開く
        self.workbook = gc.open_by_key(SHEET_ID)
        # ワークシート1シート目指定
        self.worksheet = self.workbook.get_worksheet(0)

  # 最終行に書き込み
  def append_row(self) -> None:
    test = ["test1", "test2", "test3"]
        # value_input_option="USER_ENTERED"全て文字列として書き込みのを防止
        self.worksheet.append_row(test, value_input_option="USER_ENTERED")

  # セルに書き込み
  def update_cell(self) -> None:
        # update_cell(row, column, val)
        self.worksheet.update_cell(1, 2, "test")

スプレッドシートは書き込みはもちろん、読み込みもできます。
他にもスプレッドシートのシートを追加したり、名前をつけたりいろいろ操作できるのでいろいろ調べてやってみましょう。

  • スクレイピングしてきた画像URLをIMAGE関数で画像を貼り付けたりもできます。
    こちらを参考に
  • 罫線書いたり、色変えたり、行及び列の幅も操作できます。 その場合はgspread_formattingというライブラリを使いましょう。
    gspread_formatting公式
1
1
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
1
1