通过G-Suite帐户通过PHP API访问google工作表

问题描述 投票:2回答:1

我是该组织的成员,我建立了一个新项目,启用了Google Sheets API,并设置了一个具有所有者角色的服务帐户,我下载了包含凭证(包括证书和所有内容)的json文件。

我进去并与为该服务帐户生成的电子邮件共享此工作表。

当我运行PHP脚本并调用getSpreadsheetFeed()时,工作表根本不会显示。

[当我把这张纸放在我自己的个人Google驱动器上并与同一服务帐户共享时,它会按预期显示。

此工作表位于“共享驱动器”文件夹中。

<?php
require __DIR__ . '/vendor/autoload.php';

use Google\Spreadsheet\DefaultServiceRequest;
use Google\Spreadsheet\ServiceRequestFactory;

putenv('GOOGLE_APPLICATION_CREDENTIALS=' . __DIR__ . '/client_secret.json');

$client = new Google_Client;
$client->useApplicationDefaultCredentials();

$client->setApplicationName("MSE Reader Application");
$client->setScopes(Google_Service_Sheets::SPREADSHEETS);

if ($client->isAccessTokenExpired()) {
    $client->refreshTokenWithAssertion();
}

$accessToken = $client->fetchAccessTokenWithAssertion()["access_token"];
ServiceRequestFactory::setInstance(
    new DefaultServiceRequest($accessToken)
);

$spreadsheets = (new Google\Spreadsheet\SpreadsheetService)->getSpreadsheetFeed();

print_r($spreadsheets);

?>
php google-sheets-api gsuite
1个回答
0
投票

我已经能够使用官方客户端来解决此问题,因为https://github.com/asimlqt/php-google-spreadsheet-client似乎已过时且未得到积极维护。

https://developers.google.com/sheets/api/quickstart/php

此快速入门对我有用:

$service = new Google_Service_Sheets($client);

// Prints the names and majors of students in a sample spreadsheet:
// https://docs.google.com/spreadsheets/d/1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms/edit
$spreadsheetId = '1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms';
$range = 'Class Data!A2:E';
$response = $service->spreadsheets_values->get($spreadsheetId, $range);
$values = $response->getValues();
© www.soinside.com 2019 - 2024. All rights reserved.