如何使用Google表格API v4使用PHP在电子表格中创建新工作表或选项卡

Vol*_*ike 4 php google-api google-sheets-api

使用PHP,Google Sheets API v4文档中不清楚如何在现有电子表格中创建新工作表(也称为"制表符").

奇怪的是,我可以通过API资源管理器使用batchUpdate来完成它,但他们没有解释如何在PHP中执行此操作.

Vol*_*ike 14

看起来文档说我们必须使用来自$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) {}
Run Code Online (Sandbox Code Playgroud)

鉴于您已经对API进行了身份验证以获取$client对象,然后使用它来获取$service类的对象Google_Service_Sheets,并且已经分配$sSpreadsheetID了电子表格的ID,那么上述例程将尝试向您的名为"新工作表"的电子表格,不会销毁任何现有工作表,如果此选项卡已存在,则不会显示错误.此时,您可以使用A1表示法对新工作表执行新操作.


小智 6

看看这个

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()
Run Code Online (Sandbox Code Playgroud)