简体   繁体   中英

How to make google spreadsheet public?

This program creates new google spreadsheet but I can't access it. How to make it public? I tried using google drive api but then I watched a video where dude didn't use it and everything was ok so I'm confused.

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

def get_service_sacc():
    creds_json = "bubbly-mantis-357613-85d3b9e3b0f9.json"
    scopes = ['https://www.googleapis.com/auth/spreadsheets']

    creds_service = ServiceAccountCredentials.from_json_keyfile_name(creds_json, scopes).authorize(httplib2.Http())
    return build('sheets', 'v4', http=creds_service)

def init_spreadsheet(title):
    service = get_service_sacc()
    spreadsheet = {
        'properties': {
            'title': title,
        }
    }
    spreadsheet = service.spreadsheets().create(body=spreadsheet,
                                            fields='spreadsheetId') \
    .execute()
    print(f"Spreadsheet ID: {(spreadsheet.get('spreadsheetId'))}")
    return spreadsheet.get('spreadsheetId')


init_spreadsheet("CRYPTO")

Just solved by using google drive api

def get_creds():
    creds_json = "bubbly-mantis-357613-85d3b9e3b0f9.json"
    scopes = ['https://www.googleapis.com/auth/spreadsheets', 'https://www.googleapis.com/auth/drive']
    creds_service = ServiceAccountCredentials.from_json_keyfile_name(creds_json, scopes).authorize(httplib2.Http())

    return creds_service

def get_service_sacc():
    return build('sheets', 'v4', http=get_creds())

def init_spreadsheet(title):
    service = get_service_sacc()
    spreadsheet = {
        'properties': {
            'title': title,
        }
    }
    spreadsheet = service.spreadsheets().create(body=spreadsheet,
                                            fields='spreadsheetId').execute()

    spreadsheetId = spreadsheet['spreadsheetId']

    driveService = googleapiclient.discovery.build('drive', 'v3',
                                         http=get_creds())
    access = driveService.permissions().create(
        fileId=spreadsheetId,
        body={'type': 'anyone', 'role': 'reader'},
        fields='id'
    ).execute()
    print(f"Spreadsheet ID: {(spreadsheet.get('spreadsheetId'))}")
    return spreadsheet.get('spreadsheetId')

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM