[英]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.