У меня есть скрипт, который должен извлечь данные из Google Drive, Bigquery, а затем передать их в Google Sheets.
Мне удалось пройти проверку подлинности на листах Bigquery и Google без браузера, но я не могу найти четкую информацию о том, как это сделать в Google Диске, и, что более важно, о том, как сделать это аккуратно Таким образом, сохраненная учетная запись службы работает со всеми тремя.
Вот что у меня есть для Bigquery
import pandas_gbq
from google.oauth2 import service_account
credentials = service_account.Credentials.from_service_account_info(
{
-InfoService account
},
)
credentials = credentials.with_scopes(
[
'https://www.googleapis.com/auth/cloud-platform',
'https://www.googleapis.com/auth/bigquery',
'https://www.googleapis.com/auth/drive',
],
)
sql = """sqlquery"""
df = pandas_gbq.read_gbq(sql, project_id=project_id, credentials=credentials)
И для листов Google
auth_key = {
"client_id": "id",
"client_secret": "secret",
"refresh_token": "token"
}
credentials = client.OAuth2Credentials(
access_token=None,
client_id=auth_key['client_id'],
client_secret=auth_key['client_secret'],
refresh_token=auth_key['refresh_token'],
token_expiry=None,
token_uri=GOOGLE_TOKEN_URI,
user_agent=None,
revoke_uri=GOOGLE_REVOKE_URI)
credentials.refresh(httplib2.Http())
credentials.authorize(httplib2.Http())
cred = json.loads(credentials.to_json())
cred['type'] = 'authorized_user'
with open('adc.json', 'w') as outfile:
json.dump(cred, outfile)
gauth = GoogleAuth()
gauth.credentials = credentials
client = gspread.authorize(gauth.credentials)