以下では、Googleシートでスプレッドシートをプログラムで作成することができますが、シートの所有者は開発者アカウント(「gserviceaccount.com」で終わる狂った文字列です)で、通常のアカウントでスプレッドシートを表示できません。 Googleユーザーを読み取り/書き込み権限に追加するには、他に何が必要ですか?Googleスプレッドシートのオーナーを変更するにはどうすればよいですか?
from oauth2client.service_account import ServiceAccountCredentials
from googleapiclient import discovery
# ... json_key is the json blob that has the credentials
scope = ['https://spreadsheets.google.com/feeds']
credentials = ServiceAccountCredentials.from_json_keyfile_dict(json_key, scope)
service = discovery.build('sheets', 'v4', credentials=credentials)
spreadsheet = {
"properties": {"title": "my test spreadsheet"}
}
service.spreadsheets().create(body=spreadsheet).execute()
編集:
私は['https://www.googleapis.com/auth/drive']
にスコープを変更しようとしたが、以下の答えはまだ私のために動作しません。私はつまり
['new_batch_http_request', u'spreadsheets']
を取得
print [xx for xx in dir(service) if not xx.startswith('_')]
を実行すると、私はサービスが定義されているとして、permissions()
はservice
のメソッドではありません。私は何をすべきですか?
うん、あなたの 'service'は私と同じものですか?私はこれを得ます: 'AttributeError: 'リソース'オブジェクトには属性" permissions "がありません" return service.permissions()。insert' ...ビットの 。 "service.'と入力した後にIPythonのタブを押すと、" permissions() '"はメンバーメソッドではないようです。 – dslack
ああ、問題は私の 'スコープ'ですか? – dslack
コメント形式よりもポスト形式で読むのが簡単だと思ったので、あなたの提案に応じて上記の投稿に編集を追加しました。正解、スコープは問題ではないようです(?) – dslack