簡體   English   中英

如何使用 Google Sheets API v4 使用 PHP 在電子表格中創建新的工作表或標簽

[英]How To Use Google Sheets API v4 To Create New Sheet or Tab in Spreadsheet with PHP

對於 PHP, Google Sheets API v4 文檔中不清楚如何在現有電子表格中創建新工作表(又名“標簽”)。

奇怪的是,我可以通過API Explorer使用 batchUpdate 來完成,但他們沒有從中解釋如何在 PHP 中執行此操作。

看起來文檔說我們必須使用$service->spreadsheets_values集合中的 batchUpdate。 但這是不正確的。 它應該是$service->spreadsheets集合。 經過大量試驗和錯誤后的正確答案是:

try {
    $body = new Google_Service_Sheets_BatchUpdateSpreadsheetRequest(array(
        'requests' => array(
            'addSheet' => array(
                'properties' => array(
                    'title' => 'New Sheet'
                )
            )
        )
    ));
    $result1 = $service->spreadsheets->batchUpdate($sSpreadsheetID,$body);
} catch(Exception $ignore) {}

鑒於您已經驗證了您的 API 以獲取$client對象,然后使用它來獲取類Google_Service_Sheets$service對象,並且您已將$sSpreadsheetID分配給電子表格的 ID,那么上述例程將嘗試在不破壞任何現有標簽的情況下向您的電子表格添加一個名為“新工作表”的新標簽,如果此標簽已存在,則不會顯示錯誤。 那時,您可以通過使用A1 Notation對新工作表進行處理來做一些新的事情。

看看這個

SCOPES = ['https://www.googleapis.com/auth/spreadsheets']
SERVICE_ACCOUNT_FILE = 'credentials.json'
SPREADSHEET_ID = spreadsheetId

creds = None
creds = service_account.Credentials.from_service_account_file(
    SERVICE_ACCOUNT_FILE, scopes=SCOPES)

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

batch_update_values_request_body = {
        'requests': [
            {
                'addSheet': {
                    'properties': {
                        'title': worksheetName
                    }
                }
            }
        ]
    }
    request = service.spreadsheets().batchUpdate(
        spreadsheetId=SPREADSHEET_ID, body=batch_update_values_request_body)
    response = request.execute()

這是使用 Node.js 客戶端的方法:

    const gsapi = google.sheets({version: 'v4', auth: client})
    const options = {
      spreadsheetId: 'YOUR ID IS EVERYTHING BETWEEN /d/ and /edit on your spreadsheets URL'
    }

    const res = await gsapi.spreadsheets.batchUpdate({
      spreadsheetId: options.spreadsheetId,
      requestBody: {
        requests: [{
          addSheet: {
            properties: {
              title: table,
            }
          }
        }]
      }
    })

    console.log(res)

暫無
暫無

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

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