73986


やりたいこと：  
Googleスプレッドシートから特定のシートだけを取得してCSVに書き込みたい。

現在下記のコードだと全てのシートを取得し、CSVで書き込むことはできます。

[code]

    import csv
    import gspread
    from oauth2client.service_account import ServiceAccountCredentials
    
    scope = ['https://spreadsheets.google.com/feeds']
    credentials = ServiceAccountCredentials.from_json_keyfile_name('credentials.json', scope)
    
    docid = "123"
    
    client = gspread.authorize(credentials)
    spreadsheet = client.open_by_key(docid)
    for i, worksheet in enumerate(spreadsheet.worksheets()):
        filename = docid + '-worksheet' + str(i) + '.csv'
        with open(filename, 'wb') as f:
            writer = csv.writer(f)
            writer.writerows(worksheet.get_all_values())
    
[/code]

[gspreadから情報を取得しました。][1]

こちらのコードで試してみましたが"sheet2"を取得しようとすると  
「ssdownload.py」のファイルだけ生成され、開くと実行したコードが表示されます。

[code]

    import csv
    import gspread
    from oauth2client.service_account import ServiceAccountCredentials
    
    scope = ['https://spreadsheets.google.com/feeds']
    credentials = ServiceAccountCredentials.from_json_keyfile_name('credentials.json', scope)
    
    docid = "123"
    
    client = gspread.authorize(credentials)
    spreadsheet = client.open_by_key(docid)
    
    def worksheets(self,title):##new
        sht = client.open('Sheet2')##new
        worksheet = sht.get_worksheet(0)##new
        for i, worksheet in enumerate(spreadsheet.worksheets()):
            filename = docid + '-worksheet' + str(i) + '.csv'
            with open(filename, 'w', newline="",encoding='utf_8_sig') as f:
                writer = csv.writer(f)
                writer.writerows(worksheet.get_all_values())
    
[/code]

わかる方いらっしゃいましたらご教示願います。


CC BY-SA 4.0
2021-02-11T11:12:58.327
73933
2021-02-14T08:41:15.953
2021-02-12T00:26:52.157
3060
18859
question
python csv google-spreadsheet
Googleスプレッドシートから特定のシートだけCSVに書き込む


次のサイトがよくまとまっています。  
[gspreadライブラリの使い方まとめ！Pythonでスプレッドシートを操作する | たぬハック](https://tanuhack.com/)

特定のシートのみをcsvへエクスポートしたいという処理だと、下記のような感じになります。  
workbookをスプレッドシートキーで指定しています。  
自分の環境に合わせて、お使いください。  
SPREAD_SHEET_KEY=''  
CSV_FILENAME = "./test.csv"  
SHEET_NAME='シート1'

[code]

    import gspread
    import json
    import csv
    from oauth2client.service_account import ServiceAccountCredentials 
    
    scope = ['https://spreadsheets.google.com/feeds','https://www.googleapis.com/auth/drive']
    
    credentials = ServiceAccountCredentials.from_json_keyfile_name('credentials.json', scope)
    gc = gspread.authorize(credentials)
    
    SPREAD_SHEET_KEY=''
    CSV_FILENAME = "./test.csv"
    SHEET_NAME='シート1'
    
    workbook = gc.open_by_key(SPREAD_SHEET_KEY)
    worksheet = workbook.worksheet(SHEET_NAME)
    with open(CSV_FILENAME, 'w', newline='') as csvFile:
        writer = csv.writer(csvFile)
        writer.writerows(worksheet.get_all_values())
    
[/code]


CC BY-SA 4.0
2021-02-14T08:41:15.953
73986
2021-02-14T08:41:15.953
43957
73933
answer