<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja">
	<id>https://mochiu.net/index.php?action=history&amp;feed=atom&amp;title=Python%E3%81%AE%E5%BF%9C%E7%94%A8_-_Google_Sheets_API</id>
	<title>Pythonの応用 - Google Sheets API - 版の履歴</title>
	<link rel="self" type="application/atom+xml" href="https://mochiu.net/index.php?action=history&amp;feed=atom&amp;title=Python%E3%81%AE%E5%BF%9C%E7%94%A8_-_Google_Sheets_API"/>
	<link rel="alternate" type="text/html" href="https://mochiu.net/index.php?title=Python%E3%81%AE%E5%BF%9C%E7%94%A8_-_Google_Sheets_API&amp;action=history"/>
	<updated>2026-06-04T13:59:02Z</updated>
	<subtitle>このウィキのこのページに関する変更履歴</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://mochiu.net/index.php?title=Python%E3%81%AE%E5%BF%9C%E7%94%A8_-_Google_Sheets_API&amp;diff=12882&amp;oldid=prev</id>
		<title>Wiki: /* スプレッドシートのオープン */</title>
		<link rel="alternate" type="text/html" href="https://mochiu.net/index.php?title=Python%E3%81%AE%E5%BF%9C%E7%94%A8_-_Google_Sheets_API&amp;diff=12882&amp;oldid=prev"/>
		<updated>2024-12-28T08:34:43Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;スプレッドシートのオープン&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ja&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← 古い版&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2024年12月28日 (土) 17:34時点における版&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l71&quot;&gt;71行目:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;71行目:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  scope = [&amp;#039;https://spreadsheets.google.com/feeds&amp;#039;,&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  scope = [&amp;#039;https://spreadsheets.google.com/feeds&amp;#039;,&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;           &amp;#039;https://www.googleapis.com/auth/drive&amp;#039;]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;           &amp;#039;https://www.googleapis.com/auth/drive&amp;#039;]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  credentials = ServiceAccountCredentials.from_json_keyfile_name(&#039;&amp;lt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;your-credentials.json&lt;/del&gt;&amp;gt;&#039;, scope)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  credentials = ServiceAccountCredentials.from_json_keyfile_name(&#039;&amp;lt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;サービスアカウントキー&lt;/ins&gt;&amp;gt;&#039;, scope)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  gc = gspread.authorize(credentials)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  gc = gspread.authorize(credentials)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key mochiu_wiki:diff:1.41:old-12881:rev-12882:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>Wiki</name></author>
	</entry>
	<entry>
		<id>https://mochiu.net/index.php?title=Python%E3%81%AE%E5%BF%9C%E7%94%A8_-_Google_Sheets_API&amp;diff=12881&amp;oldid=prev</id>
		<title>Wiki: ページの作成:「== 概要 == * 大量のデータを扱う場合 *: gspread-pandas *: &lt;br&gt; * 細かい書式設定が必要な場合 *: gspread *: Google Sheets API &lt;br&gt;&lt;br&gt;  == サービスアカウントキー == サービスアカウントキーは、Google Cloud Platformで発行されるサービスアカウントの認証情報が含まれるJSONファイルである。&lt;br&gt; &lt;br&gt; 以下に示す手順で取得することができる。&lt;br&gt; &lt;br&gt; # Google Cloud Platform (GCP)…」</title>
		<link rel="alternate" type="text/html" href="https://mochiu.net/index.php?title=Python%E3%81%AE%E5%BF%9C%E7%94%A8_-_Google_Sheets_API&amp;diff=12881&amp;oldid=prev"/>
		<updated>2024-12-28T08:33:46Z</updated>

		<summary type="html">&lt;p&gt;ページの作成:「== 概要 == * 大量のデータを扱う場合 *: gspread-pandas *: &amp;lt;br&amp;gt; * 細かい書式設定が必要な場合 *: gspread *: Google Sheets API &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;  == サービスアカウントキー == サービスアカウントキーは、Google Cloud Platformで発行されるサービスアカウントの認証情報が含まれるJSONファイルである。&amp;lt;br&amp;gt; &amp;lt;br&amp;gt; 以下に示す手順で取得することができる。&amp;lt;br&amp;gt; &amp;lt;br&amp;gt; # Google Cloud Platform (GCP)…」&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新規ページ&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== 概要 ==&lt;br /&gt;
* 大量のデータを扱う場合&lt;br /&gt;
*: gspread-pandas&lt;br /&gt;
*: &amp;lt;br&amp;gt;&lt;br /&gt;
* 細かい書式設定が必要な場合&lt;br /&gt;
*: gspread&lt;br /&gt;
*: Google Sheets API&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== サービスアカウントキー ==&lt;br /&gt;
サービスアカウントキーは、Google Cloud Platformで発行されるサービスアカウントの認証情報が含まれるJSONファイルである。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
以下に示す手順で取得することができる。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
# Google Cloud Platform (GCP) でのセットアップ&lt;br /&gt;
## GCPコンソール (https://console.cloud.google.com/) にアクセスする。&lt;br /&gt;
## プロジェクトを作成または選択する。&lt;br /&gt;
## Google Sheets APIとGoogle Drive APIを有効化する。&lt;br /&gt;
#: &amp;lt;br&amp;gt;&lt;br /&gt;
# サービスアカウントの作成&lt;br /&gt;
## GCPコンソールの[IAMと管理] - [サービスアカウント]に移動する。&lt;br /&gt;
## [サービスアカウントを作成]を選択する。&lt;br /&gt;
## 名前と説明を入力する。&lt;br /&gt;
##: 例: spreadsheet-automation&lt;br /&gt;
## 適切な権限を付与する。&lt;br /&gt;
##: 例: [編集者]ロール&lt;br /&gt;
#: &amp;lt;br&amp;gt;&lt;br /&gt;
# 認証情報 (JSONキー) の取得&lt;br /&gt;
## 作成したサービスアカウントを選択する。&lt;br /&gt;
## [鍵]タブから[鍵を追加] - [新しい鍵を作成]を選択する。&lt;br /&gt;
## キーのタイプで[JSON]を選択する。&lt;br /&gt;
## ダウンロードされるJSONファイルが&amp;quot;your-credentials.json&amp;quot;に相当する。&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Google Cloud Platformでは、このファイルは以下のような名前で自動的にダウンロードされる。&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;プロジェクトID&amp;gt;-&amp;lt;ユニークID&amp;gt;.json&lt;br /&gt;
 &lt;br /&gt;
 # 例:&lt;br /&gt;
 my-project-123456-458ad41e85a9.json&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
開発者は、このファイルを任意の名前 (credentials.json等) にリネームして使用する。&lt;br /&gt;
ただし、セキュリティの側面から元のファイル名をそのまま使用することも推奨されている。&lt;br /&gt;
サービスアカウントキーの内容は、以下に示すような構造になっている。&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;type&amp;quot;: &amp;quot;&amp;lt;サービスアカウント&amp;gt;&amp;quot;,&lt;br /&gt;
   &amp;quot;project_id&amp;quot;: &amp;quot;&amp;lt;プロジェクトID&amp;gt;&amp;quot;,&lt;br /&gt;
   &amp;quot;private_key_id&amp;quot;: &amp;quot;&amp;lt;秘密鍵ID&amp;gt;&amp;quot;,&lt;br /&gt;
   &amp;quot;private_key&amp;quot;: &amp;quot;&amp;lt;秘密鍵の内容&amp;gt;&amp;quot;,&lt;br /&gt;
   &amp;quot;client_email&amp;quot;: &amp;quot;&amp;lt;サービスアカウントのメールアドレス&amp;gt;&amp;quot;,&lt;br /&gt;
   &amp;quot;client_id&amp;quot;: &amp;quot;&amp;lt;クライアントID&amp;gt;&amp;quot;,&lt;br /&gt;
   &amp;quot;auth_uri&amp;quot;: &amp;quot;https://accounts.google.com/o/oauth2/auth&amp;quot;,&lt;br /&gt;
   &amp;quot;token_uri&amp;quot;: &amp;quot;https://oauth2.googleapis.com/token&amp;quot;,&lt;br /&gt;
   &amp;quot;auth_provider_x509_cert_url&amp;quot;: &amp;quot;https://www.googleapis.com/oauth2/v1/certs&amp;quot;,&lt;br /&gt;
   &amp;quot;client_x509_cert_url&amp;quot;: &amp;quot;https://www.googleapis.com/robot/v1/metadata/x509/...&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;※注意&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;サービスアカウントキーは秘密鍵を含むため、絶対に公開してはならない。&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;そのため、環境変数や設定ファイルとして安全に管理することが推奨される。&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;サービスアカウントキーを使用する前に、対象のスプレッドシートをサービスアカウントのメールアドレス (client_email) と共有する必要がある。&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== スプレッドシートのオープン ==&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
 import gspread&lt;br /&gt;
 from oauth2client.service_account import ServiceAccountCredentials&lt;br /&gt;
 &lt;br /&gt;
 # OAuth2の認証設定&lt;br /&gt;
 scope = [&amp;#039;https://spreadsheets.google.com/feeds&amp;#039;,&lt;br /&gt;
          &amp;#039;https://www.googleapis.com/auth/drive&amp;#039;]&lt;br /&gt;
 credentials = ServiceAccountCredentials.from_json_keyfile_name(&amp;#039;&amp;lt;your-credentials.json&amp;gt;&amp;#039;, scope)&lt;br /&gt;
 gc = gspread.authorize(credentials)&lt;br /&gt;
 &lt;br /&gt;
 # スプレッドシートを開く&lt;br /&gt;
 worksheet = gc.open(&amp;#039;&amp;lt;スプレッドシート名&amp;gt;&amp;#039;).sheet1&lt;br /&gt;
 &lt;br /&gt;
 # セルの書式設定例&lt;br /&gt;
 worksheet.format(&amp;#039;A1:D1&amp;#039;, {&lt;br /&gt;
    &amp;quot;backgroundColor&amp;quot;: {&amp;quot;red&amp;quot;: 0.8, &amp;quot;green&amp;quot;: 0.8, &amp;quot;blue&amp;quot;: 0.8},&lt;br /&gt;
    &amp;quot;horizontalAlignment&amp;quot;: &amp;quot;CENTER&amp;quot;,&lt;br /&gt;
    &amp;quot;textFormat&amp;quot;: {&amp;quot;bold&amp;quot;: True}&lt;br /&gt;
 })&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== レート制限への対応 ==&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
 import time&lt;br /&gt;
 &lt;br /&gt;
 def retry_with_backoff(func, max_retries=5):&lt;br /&gt;
    for i in range(max_retries):&lt;br /&gt;
       try:&lt;br /&gt;
          return func()&lt;br /&gt;
       except gspread.exceptions.APIError as e:&lt;br /&gt;
          if e.response.status_code == 429:  # リクエストが多すぎる場合&lt;br /&gt;
             time.sleep(2 ** i)  # 指数バックオフ&lt;br /&gt;
          else:&lt;br /&gt;
             raise&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== エラーハンドリング ==&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
 try:&lt;br /&gt;
    worksheet.format(&amp;#039;A1:D1&amp;#039;, {...})&lt;br /&gt;
 except gspread.exceptions.APIError as e:&lt;br /&gt;
    print(f&amp;quot;APIエラーが発生 : {e}&amp;quot;)&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== データフレームを使用した操作 ==&lt;br /&gt;
pandasライブラリおよびgspread-pandasライブラリを組み合わせることにより、データフレームを使用した操作を簡単に行うことができる。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
 from gspread_pandas import Spread&lt;br /&gt;
 import pandas as pd&lt;br /&gt;
 &lt;br /&gt;
 # スプレッドシートに接続&lt;br /&gt;
 spread = Spread(&amp;#039;&amp;lt;スプレッドシート名&amp;gt;&amp;#039;)&lt;br /&gt;
 &lt;br /&gt;
 # データフレームの作成と書き込み&lt;br /&gt;
 df = pd.DataFrame(your_data)&lt;br /&gt;
 spread.df_to_sheet(df, index=False, sheet=&amp;#039;Sheet1&amp;#039;)&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title={{PAGENAME}} : Exploring Electronics and SUSE Linux | MochiuWiki&lt;br /&gt;
|keywords=MochiuWiki,Mochiu,Wiki,Mochiu Wiki,Electric Circuit,Electric,pcb,Mathematics,AVR,TI,STMicro,AVR,ATmega,MSP430,STM,Arduino,Xilinx,FPGA,Verilog,HDL,PinePhone,Pine Phone,Raspberry,Raspberry Pi,C,C++,C#,Qt,Qml,MFC,Shell,Bash,Zsh,Fish,SUSE,SLE,Suse Enterprise,Suse Linux,openSUSE,open SUSE,Leap,Linux,uCLnux,Podman,電気回路,電子回路,基板,プリント基板&lt;br /&gt;
|description={{PAGENAME}} - 電子回路とSUSE Linuxに関する情報 | This page is {{PAGENAME}} in our wiki about electronic circuits and SUSE Linux&lt;br /&gt;
|image=/resources/assets/MochiuLogo_Single_Blue.png&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
__FORCETOC__&lt;br /&gt;
[[カテゴリ:Python]]&lt;/div&gt;</summary>
		<author><name>Wiki</name></author>
	</entry>
</feed>