簡體   English   中英

如何使用谷歌 API 為 python 在特定文件夾下創建工作表?

[英]How to create a sheet under a specific folder with google API for python?

我可以在“我的雲端硬盤”的根目錄中使用以下代碼創建工作表,但是如何在“我的雲端硬盤”或“共享驅動器”的文件夾下創建工作表?

from googleapiclient.discovery import build

service = build(‘sheets’, ‘v4’, credentials=creds)
sheet = service.spreadsheets()
body = {}
results = sheet.create(body=body).execute()
pprint(results)
  • 您想在特定文件夾中創建新的電子表格。
  • 您想使用帶有 python 的 google-api-python-client 來實現此目的。

如果我的理解是正確的,這個答案怎么樣?

問題:

不幸的是,在當前階段,無法使用 Sheets API 將新的電子表格直接創建到 Google Drive 的特定文件夾中。 在這種情況下,需要使用驅動器 API。

示例腳本:

在運行腳本之前,請設置文件夾 ID。

模式一:

在這種模式下,新的電子表格會直接創建到您 Google Drive 中的特定文件夾中。 為了創建電子表格,使用了application/vnd.google-apps.spreadsheet的 mimeType。

腳本:
 drive = build('drive', 'v3', credentials=creds) file_metadata = { 'name': 'sampleName', 'parents': ['### folderId ###'], 'mimeType': 'application/vnd.google-apps.spreadsheet', } res = drive.files().create(body=file_metadata).execute() print(res)

模式二:

在此模式中,在 Sheets API 創建新的電子表格后,電子表格將移動到您的 Google Drive 中的特定文件夾。

腳本:
 # Create Spreadsheet to the root folder. service = build('sheets', 'v4', credentials=creds) sheet = service.spreadsheets() body = {} results = sheet.create(body=body).execute() pprint(results) # Move the created Spreadsheet to the specific folder. drive = build('drive', 'v3', credentials=creds) folderId = '### folderId ###' res = drive.files().update(fileId=results['spreadsheetId'], addParents=folderId, removeParents='root').execute() print(res)

筆記:

  • 對於這兩個示例,請添加https://www.googleapis.com/auth/drive的 scope 。 添加范圍后,請刪除創建的包含刷新令牌的憑據文件並重新授權。 這樣,額外的范圍就會反映到刷新令牌中。
  • 如果您想使用共享雲端硬盤,請進行如下修改。
    • 對於模式 1
      • file_metadata = {'name': 'sampleName','parents': ['### folderId ###'],'mimeType': 'application/vnd.google-apps.spreadsheet','driveId': "###"}
      • res = drive.files().create(body=file_metadata, supportsAllDrives=True).execute()
    • 對於模式 2
      • res = drive.files().update(fileId=results['spreadsheetId'], body={'driveId': "###"}, addParents=folderId, removeParents='root', supportsAllDrives=True).execute()

參考:

如果我誤解了您的問題並且這不是您想要的方向,我深表歉意。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM