当前位置: 首页 > 知识库问答 >
问题:

使用驱动API(PHP)在Google电子表格中设置“发布到web”

濮阳国兴
2023-03-14

我正在尝试使用GoogleDrive API将Google工作表设置为“发布到Web”模式,以便将其嵌入到我的网站中。

在我的PHP中使用驱动API:-

// Get the API client and construct the service object.
$client = getClient();
$service = new Google_Service_Sheets($client);

$driveservice = new Google_Service_Drive($client);
/*
$copiedFile = new Google_Service_Drive_DriveFile(array('name' => 'Project plan'));
$responseBody=$driveservice->files->copy("1hAjKEox4hhlK4aoCVLuUVfTJbKPhFklG1gG9-HsGH7U", $copiedFile);
$sheet_id=$responseBody->id;
*/
$sheet_id="1tYktONmPaaxGaS5ylNn8nTzPjtdEsuYIDHakhap8Amk";
$revisions=$driveservice->revisions;
$sheetinformation =$revisions->listRevisions("1tYktONmPaaxGaS5ylNn8nTzPjtdEsuYIDHakhap8Amk");
$revisions=$sheetinformation->getRevisions();
$count=count($revisions);
$revision_id=$revisions[$count-1]->id;
$finalrevision=$driveservice->revisions->get($sheet_id,$revision_id);
$finalrevision->publishAuto=true;
$driveservice->revisions->update($sheet_id,$revision_id, $finalrevision);

die();

据我所知,这符合驱动器API规范(我真希望他们没有删除PHP的代码示例!)。但是,我在响应正文中返回了以下错误:-

"error": {
  "errors": [
   {
    "domain": "global",
    "reason": "fieldNotWritable",
    "message": "The resource body includes fields which are not directly writable."
   }
  ],
  "code": 403,
  "message": "The resource body includes fields which are not directly writable."
 }
}

任何帮助都将不胜感激!

共有1个答案

狄溪叠
2023-03-14

获取最终版本时添加参数:

$finalrevision=$driveservice->revisions->get($sheet_id,$revision_id, array('fields' => 'publishAuto'));

如果没有最后一个参数,get方法将返回整个版本(包括所有字段,包括只读字段)。

 类似资料:
  • 我试图模拟单击“发布到web”- 然而,这似乎对我的文档没有影响。 我希望能够以编程方式创建一个谷歌电子表格,可以立即在世界范围内访问。

  • 我正在使用谷歌工作表api创建工作表,并希望获得工作表的iframe可嵌入链接。

  • 问题内容: 我正在尝试将表单数据发布到Google电子表格。当前,如果表单经过验证,则会发生以下情况: 我使用成功设置来验证我的表单数据已正确序列化(正确)并且成功。但是,我的Google电子表格未更新(没有数据通过)。我在此处使用了示例代码,将doGet更改为doPost(http://mashe.hawksey.info/2011/10/google- spreadsheets-as-a-da

  • 我已经通过谷歌官方文档《开发者指南》API中提到的一个简单Java代码成功地在我的Google Drive帐户的现有电子表格中创建了一个新的工作表,但我想通过Java代码在我的Google Drive帐户中创建一个新的电子表格。在链接中,他们没有提到这方面的任何示例代码。我已经在Spreadservice类中看到了不同的可用方法。 如何使用Google电子表格API实现这一点?

  • 问题内容: 我创建了一些工具来填充Google电子表格。自从我今天出错以来,它已经工作了1年 这是与gmail连接的代码部分: 我不知道如何与gmail连接,我正在尝试通过oAuth进行此操作,但我不知道如何进行操作。在https://developers.google.com/google- apps/spreadsheets/authorize 上的示例中,只有.net代码。 问题答案: 我终

  • 从GoogleSpreadsheetsAPI上的GoogleDeveloper文档开始,我发现“提供了许多不同语言的客户端库”,但Google只提供Java和.NET的客户端库。对于PHP库,他们建议使用Zend GData。因此,我浏览了Zend GData repo,Zend说他们的GData组件已经停止使用,并使用Google API客户端库进行PHP。该库不适用于电子表格API,因此您必须