プログラミングマガジン

プログラミングを中心にIT技術をできるだけわかりやすくまとめます。

  • ホーム
  • Python
  • 【Python】スプレットシート操作
 
 
     
  • サーバー言語  
    • Python
    • Ruby
    • PHP
    • SQL
  •  
  • インフラ  
       
    • AWS
    •  
    • 基本
    • Git
  • Web
       
    • Web開発
    • JavaScript
    • Vue.js
    • React
  •  
  • 設計  
       
    • 実装設計
    • DB設計
  • 問い合わせ
  

【Python】スプレットシート操作

06.11

  • miyabisan2
  • コメントを書く

この記事は2分で読めます

事前準備

1.Google Cloud Platformのプロジェクトを作成する。

以下のURLにアクセスします。

https://console.developers.google.com/

もし、Googleアカウントでログインしてないゲスト状態になっている場合はログインしましょう。

プロジェクトを作成する。

  1. 「プロジェクトを作成」をクリック
  2. プロジェクト名を入力(例:My Project Testなど)
  3. 「作成」をクリックする。

2.Google Drive APIを有効にする。

  1. サイドバーにあるライブラリを選択する。
  2. 検索窓に「Drive」と入力して検索する。
  3. 「Google Drive API」が表示されるので選択する。
  4. 「有効にする」をクリックする。

3.Google Sheets APIを有効にする。

  1. サイドバーにあるライブラリを選択する。
  2. 検索窓に「Sheets」と入力して検索する。
  3. 「Google Sheets API」が表示されるので選択する。
  4. 「有効にする」をクリックする。

4.外部アプリからスプレットシートにアクセスするための認証情報を設定する。

サービスアカウントを作成する。

  1. サイドバーにある「認証情報」を選択する。
  2. 画面上部の「認証情報を作成」を選択する。
  3. 「サービスアカウント」を選択する。
  4. 「サービスアカウント名」を入力する。(例:sheets-test)
  5. 「作成」をクリックする。
  6. 「このサービス アカウントにプロジェクトへのアクセスを許可する」は「続行」をクリックします。
  7. そのまま「完了」をクリックします。

秘密鍵を作成する。

  1. 作成したサービスアカウントのメールアドレスをクリックします。
  2. 画面上部の「キー」をクリックする。
  3. 「鍵を追加」→「新しい鍵を作成」をクリックする。
  4. キーのタイプに「JSON」がついた状態で「作成」をクリックする。

これで秘密鍵の生成は完了です。この鍵は無くさないようにしましょう。

5.スプレットシート側の共有設定をする。

  1. 読み込む対象のスプレットシートを開きます。
  2. 右上の「共有」をクリックします。
  3. 「ユーザーやグループを追加」に対して「サービスアカウントのメールアドレス」をコピペします。
  4. サービスアカウントは実際にメールアドレスがあるわけではないので「通知」のチェックは外しておきましょう。
  5. 「送信」をクリックします。

6.パッケージをインストールする。

1
pip install gspread oauth2client

gspread

スプレットシート操作のためのパッケージ

oauth2client

認証情報を処理するためのライブラリ(現在は非推奨になっています。)

読み込み

セル「A1」の値を標準出力するサンプルです。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import gspread
from oauth2client.service_account import ServiceAccountCredentials
 
# jsonファイルを使って認証情報を取得
scope = ['https://spreadsheets.google.com/feeds','https://www.googleapis.com/auth/drive']
c = ServiceAccountCredentials.from_json_keyfile_name('ダウンロードした秘密鍵jsonのパス', scope)
 
# 認証情報を使ってスプレッドシートの操作権を取得
gs = gspread.authorize(c)
 
# 共有したスプレッドシートのキー(後述)を使ってシートの情報を取得
SPREADSHEET_KEY = '開いているスプレットシートのURLの「/d/」と「/edit#gid=0」の間の長い文字列'
worksheet = gs.open_by_key(SPREADSHEET_KEY).worksheet('シート名')
print(worksheet.acell('A1').value)

pandasのDataFrameにする。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import pandas as pd
# シートオブジェクトを取得
workbook = gs.open_by_key(SPREADSHEET_KEY)
worksheet = workbook.worksheet('シート名')
df = pd.DataFrame(worksheet.get_all_values())
print(df.head()) # シート内容がdataFrameの形で読み取れている。
 
# 1行目のデータを読み取る。
df.columns = df.iloc[0]
print(df.head())
 
# 1行目のデータを削除する。
df = df.drop(df.index[[0]])
print(df.head())
 
# 各列のデータ型を確認
print(df.dtypes)

get_all_values

シート内の値を多次元リストに変換する関数。

書き込み

ライブラリのインストール

1
pip install gspread_dataframe

サンプル

1
2
3
4
5
from gspread_dataframe import set_with_dataframe
# シートオブジェクトを取得
workbook = gs.open_by_key(SPREADSHEET_KEY)
workbook.add_worksheet(title='newSheet', rows=50, cols=10)
set_with_dataframe(workbook.worksheet('newSheet'), df, include_index=True)

試しに「newSheet」というシートを作って上のDataFrameを書き出していみます。

workbook.add_worksheet(title='newSheet', rows=50, cols=10)

シートをスプレットシートに追加しています。rowsやcolsを領域を決めれます。(通常のExecelと違ってシートのセル範囲のサイズを決めれます。)

set_with_dataframe

データフレームの内容をワークシートに反映するための関数です。

include_index

データフレームのインデックス番号を書き出すかどうかです。Trueなら書き出します。

ワークシートを削除する。

1
workbook.del_worksheet(workbook.worksheet('newSheet'))

再度add_worksheetを実行するとエラーになってしまいます。再度実行したい場合は上記関数で削除します。

 

スポンサーリンク
  • 2023 06.11
  • miyabisan2
  • コメントを書く
  • Python
  • Tweets Twitter
  • このエントリーをはてなブックマークに追加
  • LINEで送る

関連記事

  1. 2023 06.04

    【Python】Scrapyでspiderを作成する流れ

  2. 2023 06.26

    【Python】モジュール、自作モジュール、パッケージ、ライブラリ

  3. 2023 06.10

    【Python】ScrapyのImagePipelineの使い方

  4. 2018 06.18

    【Python】対話実行モード(REPL)。開発環境(PyCharm、IDLEなど)

  5. 2023 05.28

    【Python】「BeautifulSoup」について

  6. 2023 06.09

    【Python】Scrapy Item、Item Loader、Item pipelineの基本

  • コメント ( 0 )
  • トラックバック ( 0 )
  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

返信をキャンセルする。

【Python】「scrapy-selenium」を扱…

【Python】「Jupyter Notebook」と…

RETURN TOP

著者プロフィール

エンジニア歴10年で過去に業務系、Webデザイン、インフラ系なども経験あります。現在はWeb系でフロントエンド開発中心です。

詳細なプロフィールはこちら

スポンサーリンク

カテゴリー

  • Android
  • AngularJS
  • API
  • AWS
  • C++
  • CSS
  • cursor
  • C言語
  • DDD
  • DevOps
  • Django
  • Docker
  • Figma
  • Git
  • GitLab
  • GraphQL
  • gRPC
  • Hasura
  • Java
  • JavaScript
  • Kubernetes
  • Laravel
  • linux
  • MySQL
  • Next.js
  • nginx
  • Node.js
  • NoSQL
  • Nuxt.js
  • Oracle
  • PHP
  • Python
  • React
  • Redux
  • Rspec
  • Ruby
  • Ruby on Rails
  • Sass
  • Spring Framework
  • SQL
  • TypeScript
  • Unity
  • Vue.js
  • Webサービス開発
  • Webデザイン
  • Web技術
  • インフラ
  • オブジェクト指向
  • システム開発
  • セキュリティ
  • その他
  • データベース
  • デザインパターン
  • テスト
  • ネットワーク
  • プログラミング全般
  • マイクロサービス
  • マイクロソフト系技術
  • マルチメディア
  • リファクタリング
  • 副業
  • 未分類
  • 業務知識
  • 生成AI
  • 設計
  • 関数型言語
RETURN TOP

Copyright ©  プログラミングマガジン | プライバシーポリシー