2017-10-05 23 views
1

私は、次のコードを持っている:OAuthのGoogleのシートパイソン共有故障

from oauth2client.service_account import ServiceAccountCredentials 
from googleapiclient import discovery 
from httplib2 import Http 

SCOPES = ['https://www.googleapis.com/auth/spreadsheets', 'https://www.googleapis.com/auth/drive'] 

credentials = ServiceAccountCredentials.from_json_keyfile_name('credentials.json', scopes=SCOPES) 
http_auth = credentials.authorize(Http()) 

service = discovery.build('sheets', 'v4', credentials=(credentials)) 

spreadsheet_body = { 
    'properties': {'title': 'Test Sheet'}, 
    "sheets": [ 
     { 
      "data": [ 
       { 
        "startRow": 0, 
        "startColumn": 0, 
        "rowData": [ 
         { 
          "values": [ 
           { 
            "userEnteredValue": { 
             "stringValue": "foo" 
            }, 
           }, 
           { 
            "userEnteredValue": { 
             "stringValue": "bar" 
            }, 
           }, 
          ], 
         }, 
         { 
          "values": [ 
           { 
            "userEnteredValue": { 
             "stringValue": "row2" 
            }, 
           }, 
           { 
            "userEnteredValue": { 
             "stringValue": "row2, col2" 
            }, 
           }, 
           { 
            "userEnteredValue": { 
             "formulaValue": "=HYPERLINK(\"https://www.foo.com\")" 
            }, 
           }, 
          ], 
         }, 
        ], 
       } 
      ], 
     } 
    ], 
} 

request = service.spreadsheets().create(body=spreadsheet_body) 
response = request.execute() 

print response 

これは動作し、シートはURLを使用して作成された、しかし、私はURLを開こうとすると、私が手:

google auth error

私のアカウントはサービスアカウントのすべてのアクセス許可を持っているため、サービスアカウントのセットアップに関する問題ではないと私は間違っています。

答えて

1

私はこのために直接修正を見つけることができませんでしたが、私はgspreadライブラリを経由して回避策を見つけた:

gc = gspread.authorize(credentials) 
sht = gc.open_by_key(response['spreadsheetId']) 
sht.share('edmunds.com', perm_type='domain', role='writer') 
+0

私は同様の質問をアップロードしているが、私はドメインを使用していません。どのように誰かがそれをデフォルトすることができますか? –

関連する問題