Google Colabを使いPythonでスプレッドシートを扱う際にDriveに保存してある認証情報のキーのJsonを毎回読み込んでいるのですが、Driveの権限の認証をOKするのも手間なのでDriveを使わずにJsonを読み込ました時の備忘録です。
Driveを使わずgoogleの認証を行う
Driveからファイルを読み込まないので、代わりにJsonの中身をコード内に貼り付けてしまいます。
不恰好なので読み込んだ方が綺麗ではありますが、スケジュールで動かす際など便利です。
#@title Json情報
import gspread
def create_keyfile_dict():
variables_keys ={Jsonの中身を貼り付け} // Here!!
return variables_keys
####################################################
#ServiceAccountCredentials:Googleの各サービスへアクセスできるservice変数を生成
from oauth2client.service_account import ServiceAccountCredentials
#2つのAPIを記述しないとリフレッシュトークンを3600秒毎に発行
scope = ['https://spreadsheets.google.com/feeds','https://www.googleapis.com/auth/drive']
#認証情報設定
credentials = ServiceAccountCredentials.from_json_keyfile_dict(create_keyfile_dict(), scope)
#OAuth2の資格情報を使用してGoogle APIにログインします。
gc = gspread.authorize(credentials)
#ワークブック
workbook = gc.open_by_key(SPREADSHEET_KEY)
Here!の中身にJsonのファイルの中身をそのまま({}まで)貼り付けます。
実際に貼り付けるとこんな感じ。(一部消しています。)
variables_keys ={
"type": "service_account",
"project_id": "",
"private_key_id": "",
"private_key": "",
"client_email": "",
"client_id": "",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://oauth2.googleapis.com/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url": "",
"universe_domain": "googleapis.com"
}
あとはスプレッドシートのキーをいれればworkbookの取得が行えます。