teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

説明を追記しました。

2021/01/18 05:14

投稿

_whitecat_22
_whitecat_22

スコア1305

answer CHANGED
@@ -1,1 +1,37 @@
1
- [https://teratail.com/questions/316454](https://teratail.com/questions/316454) をご参照ください。まったく同じ質問です。
1
+ [https://teratail.com/questions/316454](https://teratail.com/questions/316454) をご参照ください。まったく同じ質問です。
2
+
3
+ ===
4
+
5
+ もし考えられるとすれば、①SpreadSheet_Keyが異なる、②秘密鍵が異なる、③ファイルの共有設定をしていない...くらいでしょうか。
6
+
7
+ なお、以下は私が組んだプログラムで使ったライブラリや設定部分の抜粋です。
8
+ ご参考になれば。
9
+
10
+
11
+ ```Python
12
+ # グーグルスプレッドシートを操作する為にimport
13
+ import gspread
14
+
15
+ # グーグルスプレッドシートの認証情報設定の為にimport
16
+ from oauth2client.service_account import ServiceAccountCredentials
17
+
18
+ # 2つのAPIを記述しないとリフレッシュトークンを3600秒毎に発行し続けなければならない
19
+ scope = ['https://spreadsheets.google.com/feeds','https://googleapis.com/auth/drive']
20
+
21
+ # 認証情報設定
22
+ # ダウンロードしたjsonファイル名をクレデンシャル変数に設定(秘密鍵、Pythonファイルから読み込みしやすい位置に置く)
23
+ credentials = ServiceAccountCredentials.from_json_keyfile_name("**************************************.json", scope)
24
+
25
+ # 共有設定したスプレッドシートキーを格納
26
+ SPREADSHEET_KEY = '********************************'
27
+
28
+ # 制限
29
+ # (1) ユーザーごとに100秒あたり100件のリクエスト
30
+ # (2) 1秒あたり10件まで
31
+
32
+ # OAuth2の資格情報を使用してGoogleAPIにログイン
33
+ gc = gspread.authorize(credentials)
34
+
35
+ # 共有設定したスプレッドシートのシート1を開く
36
+ workbook = gc.open_by_key(SPREADSHEET_KEY)
37
+ ```