php 无法使用Google Spreadsheet API访问电子表格

sdnqo3pr  于 2023-05-16  发布在  PHP
关注(0)|答案(1)|浏览(227)

我不得不适应我们的网站从现有的一个新功能。目标是阅读电子表格,然后更新它。我在使用谷歌电子表格API访问谷歌电子表格上的信息时遇到了问题。这对我来说很奇怪,考虑到我没有问题查询我的驱动器的文件和信息,如mimeType,标题等。
我的oauth2范围:

https://www.googleapis.com/auth/drive

我想打的电话是1.)

$d_data2 = @json_decode(file_get_contents('https://sheets.googleapis.com/v4/spreadsheets/1e2jdg1dcCmWhna-zV9ODNNtcgRDi2rGz8xRSsxpcH6c?fields=sheets.properties.title'),true);

上面的代码是从这个预先存在的功能2中提取和改编的。

$post = array(
     "fields" => 'items(id,embedLink,mimeType,title)',
     "supportsAllDrives" => "true",
     "includeItemsFromAllDrives" => "true",
     "access_token" => $_SESSION['g_access_token'],
     "trashed" => "false",
     "q" => "'me' in readers and title contains '22-23 Digital Learning'", // mimeType='application/vnd.google-apps.spreadsheet'
     "pageSize" => "999",
);
$postText = http_build_query($post);

$d_data = @json_decode(file_get_contents('https://www.googleapis.com/drive/v2/files/?'.$postText),true);

当我在#1中进行调用时,返回的所有内容都是null。您有什么建议或解决方案?任何人都欢迎,请,谢谢。

zphenhs4

zphenhs41#

修改要点:

  • $d_data2 = @json_decode(file_get_contents('https://sheets.googleapis.com/v4/spreadsheets/1e2jdg1dcCmWhna-zV9ODNNtcgRDi2rGz8xRSsxpcH6c?fields=sheets.properties.title'),true);的显示脚本来看,在这种情况下,没有使用访问令牌。我认为这可能是你目前问题的原因。

当这反映在示例脚本中时,下面的示例脚本如何?

示例脚本1:

此示例脚本从Google电子表格中检索sheets.properties.title的值。

$accessToken = "###"; // Please set your valid access token.
$post = array(
    "fields" => 'sheets.properties.title',
    "access_token" => $accessToken,
);
$postText = http_build_query($post);
$d_data2 = @json_decode(file_get_contents('https://sheets.googleapis.com/v4/spreadsheets/1e2jdg1dcCmWhna-zV9ODNNtcgRDi2rGz8xRSsxpcH6c?' . $postText),true);

foreach ($d_data2["sheets"] as &$sheet) {
    printf("%s\n", $sheet["properties"]["title"]); 
}
  • 运行此脚本时,将显示所有图纸名称。

示例脚本二:

The goal is to read a spreadsheet, then update it.开始,在本示例中,使用Sheets API更改了第一个选项卡的工作表名称。

$accessToken = "###"; // Please set your valid access token.
$params = array(
    'http' => array(
        'method' => 'POST',
        'header' => "Content-Type: application/json\r\n" . "Authorization: Bearer " . $accessToken . "\r\n",
        'content' => '{"requests": [{"updateSheetProperties": {"properties": {"title": "sample","index": 0},"fields": "title"}}]}'
    )
);
$d_data2 = file_get_contents('https://sheets.googleapis.com/v4/spreadsheets/1e2jdg1dcCmWhna-zV9ODNNtcgRDi2rGz8xRSsxpcH6c:batchUpdate', false, stream_context_create($params));

printf("%s\n", $d_data2);
  • 运行此脚本时,Google Spreadsheet中第一个选项卡的工作表名称将更改为sample

注意:

  • 请再次确认电子表格ID。
  • 当我测试上述两个脚本时,我确认这两个脚本都工作正常。但是,如果发生错误,请检查是否已在API控制台启用Sheets API,以及您的访问令牌,电子表格ID和您的访问令牌是否具有访问电子表格的权限。
  • 这些是解释如何使用Sheets API的简单示例脚本。请根据您的实际情况进行修改。

参考资料:

相关问题