Google drive api 如何使用PHP API更新Google电子表格单元格

Google drive api 如何使用PHP API更新Google电子表格单元格,google-drive-api,google-api-php-client,Google Drive Api,Google Api Php Client,我想知道如何使用PHP与Google电子表格交互 我已经浏览了很多谷歌的文档,但是,这些都不是我想要的 我的目标是能够使用oAuth(而不是电子邮件/通行证)更改单元格的内容 如果这是一个RTFM问题,请原谅我,但我确实花了两个多星期的时间处理这个问题,但没有结果:/ 驱动器API不提供任何编辑电子表格的方法,包含低级单元格修改方法。请注意,您不能使用Google API PHP客户端库来使用电子表格API。这是我针对我的问题得到的解决方案: 您可以使用库执行此操作 通过以下方式安装库: P

我想知道如何使用PHP与Google电子表格交互

我已经浏览了很多谷歌的文档,但是,这些都不是我想要的

我的目标是能够使用oAuth(而不是电子邮件/通行证)更改单元格的内容


如果这是一个RTFM问题,请原谅我,但我确实花了两个多星期的时间处理这个问题,但没有结果:/

驱动器API不提供任何编辑电子表格的方法,包含低级单元格修改方法。请注意,您不能使用Google API PHP客户端库来使用电子表格API。

这是我针对我的问题得到的解决方案:


您可以使用库执行此操作

  • 通过以下方式安装库:

  • PHP文件中的引导生成器:

    require('vendor/autoload.php');
    
  • 按照以下步骤获取Google API客户端ID、客户端电子邮件和P12访问密钥,如下所述:

  • 使用以下代码:

    $accessToken=getGoogleTokenFromKeyFile(此处为客户端ID,此处为客户端电子邮件,此处为P12文件路径);
    使用Google\Spreadsheet\DefaultServiceRequest;
    使用Google\Spreadsheet\ServiceRequestFactory;
    ServiceRequestFactory::setInstance(新的DefaultServiceRequest($accessToken));
    //加载电子表格和工作表
    $worksheet=(新的Google\Spreadsheet\SpreadsheetService())
    ->获取电子表格()
    ->getByTitle('xxxxxxxx')//电子表格名称
    ->获取工作表()
    ->getByTitle('xxxxxxxxx');//工作表名称
    $listFeed=$worksheet->getListFeed();
    //取消对此的注释,以了解Google如何称呼您的列名
    //打印($listFeed->getEntries()[0]->getValues());
    //使用列标题向电子表格中添加新的空行
    $listFeed->insert(['name'=>'Simon','age'=>25','gender'=>'male']);
    /**
    *使用P12密钥文件检索Google API访问令牌,
    *客户ID和电子邮件地址
    *
    *这三样东西可以从
    * https://console.developers.google.com/
    *通过创建新的“服务帐户”
    */
    函数getGoogleTokenFromKeyFile($clientId、$clientEmail、$pathToP12File){
    $client=新的Google_客户端();
    $client->setClientId($clientId);
    $cred=新的谷歌认证断言(
    $clientEmail,
    数组('https://spreadsheets.google.com/feeds'),
    文件获取内容($pathToP12File)
    );
    $client->setAssertionCredentials($cred);
    如果($client->getAuth()->isAccessTokenExpired()){
    $client->getAuth()->refreshTokenWithAssertion($cred);
    }
    $service\u token=json\u decode($client->getAccessToken());
    返回$service\u token->access\u token;
    }
    

  • API v4,可以使用curl。获取访问令牌,然后使用curl。可以更新单行或多行,也可以更新单列或多列。如果要更新单列或单行,请使用

    使用PUT方法传递值数据,如

    $update['values'] = [[1234]];
    
    对于批量更新,而不是在URL中使用方法值,可以更改为值:batchUpdate。然后在数组中传递其他数据并使用方法POST


    你可以参考这个

    你一直在找什么?使用电子表格提要api有很多这样的例子。一切都在那里。首先了解oauth,您可以在oauth2操场上进行练习。谷歌两者都有。你能给我一个工作的例子吗?我确实获得了oAuth键,甚至成功地获得了电子表格数据,比如标题和mimeType,使用这个:$file=$service->files->get($fileId);打印“标题:”$文件->getTitle();hoever,我不知道该由谁来编辑一个单元格它都在api文档中。或者使用zend作为php包装器。感谢您的帮助,但我只是找到了一个使用zend GData的解决方案,这是目前唯一的方法,因为Google只为.NET、Java和Python的新API提供官方支持!这已经过时了。您好,我如何使用“Web应用程序”而不是“服务帐户”插入行?您好@Subhra,您需要按照中的说明并使用OAuth工作流。开发者也在这里发布了一些OAuth示例:Hi@Simon,谢谢。我能找到答案。
    sheetID = FileID
    RowORColumnRange = Sheet!A1 or Sheet!B2
    
    $update['values'] = [[1234]];