如何使用API PHP客户端更新Google Sheets文件

如何使用API PHP客户端更新Google Sheets文件,php,google-sheets,google-api-php-client,Php,Google Sheets,Google Api Php Client,我一直在看,并想用它来添加行到谷歌表。从代码上看,似乎可以使用以下方法: public function insert($fileId, Google_Service_Drive_Property $postBody, $optParams = array()) { $params = array('fileId' => $fileId, 'postBody' => $postBody); $params = array_merge($params, $opt

我一直在看,并想用它来添加行到谷歌表。从代码上看,似乎可以使用以下方法:

  public function insert($fileId, Google_Service_Drive_Property $postBody, $optParams = array())
  {
    $params = array('fileId' => $fileId, 'postBody' => $postBody);
    $params = array_merge($params, $optParams);
    return $this->call('insert', array($params), "Google_Service_Drive_Property");
  }
但我真的不知道参数是什么。我的方向对吗?另外,不太确定如何连接到特定的图纸。请告知


谢谢

使用zend framework 1.12中的Google sheets类。他们为谷歌电子表格提供了非常好的编码库


使用zend framework 1.12中的Google sheets类。他们为谷歌电子表格提供了非常好的编码库


我想出了如何解决这个问题,并想与大家分享。正如我在评论中所说的,我不认为使用Zend的GData类对我来说是一个好方法,因为它在整个框架中非常依赖于其他类,因此太重了

所以我最终使用了Google的API。Google的API用于验证我的服务,然后我开始调用电子表格客户端库

在花了一天多的时间在谷歌上搜索身份验证过程中遇到的各种问题后,我做了以下几点来解决问题:

  • 为谷歌API创建了一个新项目
  • 单击左侧“API和身份验证”下的“API”菜单
  • 搜索驱动器API并启用它(不记得是否有必要)
  • 单击左侧的“凭证”菜单
  • 单击OAuth下的“创建新客户端ID”按钮
  • 所选“服务帐户”
  • 在信息显示和json下载(不需要)后,我点击了“生成新的P12密钥”按钮
  • 我把p12文件保存在可以通过PHP访问的地方
然后在代码中,我添加了以下行:

$email = 'somethingsomethingblahblah@developer.gserviceaccount.com';
$CLIENT_ID = $email;
$SERVICE_ACCOUNT_NAME = $email;
$KEY_FILE = 'path/to/p12/file';
$SPREADSHEETS_SCOPE = 'https://spreadsheets.google.com/feeds';

$key = file_get_contents($KEY_FILE);
$auth = new Google_Auth_AssertionCredentials(
    $SERVICE_ACCOUNT_NAME,
    array($SPREADSHEETS_SCOPE),
    $key
);

$client = new Google_Client();
$client->setScopes(array($SPREADSHEETS_SCOPE));
$client->setAssertionCredentials($auth);
$client->getAuth()->refreshTokenWithAssertion();
$client->setClientId($CLIENT_ID);
$accessToken = $client->getAccessToken();
此外,我必须确保:

  • 在上述代码中,与我的服务帐户上的电子邮件地址共享我的电子表格
  • (我经营的是流浪汉CentOS,所以有点不同)

我相信您可以将此代码与电子表格以外的其他服务(如Youtube、Analytics等)一起运行,但您需要获得正确的范围链接(请参见上面的
$Spreadsheets\u scope
)。请记住,这只是在使用Google控制台上的服务帐户时发生的,这意味着您正在以编程方式从代码中获取数据。如果你想让其他用户使用API登录,那就不一样了。

我找到了解决方法,希望与大家分享。正如我在评论中所说的,我不认为使用Zend的GData类对我来说是一个好方法,因为它在整个框架中非常依赖于其他类,因此太重了

所以我最终使用了Google的API。Google的API用于验证我的服务,然后我开始调用电子表格客户端库

在花了一天多的时间在谷歌上搜索身份验证过程中遇到的各种问题后,我做了以下几点来解决问题:

  • 为谷歌API创建了一个新项目
  • 单击左侧“API和身份验证”下的“API”菜单
  • 搜索驱动器API并启用它(不记得是否有必要)
  • 单击左侧的“凭证”菜单
  • 单击OAuth下的“创建新客户端ID”按钮
  • 所选“服务帐户”
  • 在信息显示和json下载(不需要)后,我点击了“生成新的P12密钥”按钮
  • 我把p12文件保存在可以通过PHP访问的地方
然后在代码中,我添加了以下行:

$email = 'somethingsomethingblahblah@developer.gserviceaccount.com';
$CLIENT_ID = $email;
$SERVICE_ACCOUNT_NAME = $email;
$KEY_FILE = 'path/to/p12/file';
$SPREADSHEETS_SCOPE = 'https://spreadsheets.google.com/feeds';

$key = file_get_contents($KEY_FILE);
$auth = new Google_Auth_AssertionCredentials(
    $SERVICE_ACCOUNT_NAME,
    array($SPREADSHEETS_SCOPE),
    $key
);

$client = new Google_Client();
$client->setScopes(array($SPREADSHEETS_SCOPE));
$client->setAssertionCredentials($auth);
$client->getAuth()->refreshTokenWithAssertion();
$client->setClientId($CLIENT_ID);
$accessToken = $client->getAccessToken();
此外,我必须确保:

  • 在上述代码中,与我的服务帐户上的电子邮件地址共享我的电子表格
  • (我经营的是流浪汉CentOS,所以有点不同)

我相信您可以将此代码与电子表格以外的其他服务(如Youtube、Analytics等)一起运行,但您需要获得正确的范围链接(请参见上面的
$Spreadsheets\u scope
)。请记住,这只是在使用Google控制台上的服务帐户时发生的,这意味着您正在以编程方式从代码中获取数据。如果您希望让其他用户使用API登录,那么情况就不同了。

终于有机会做到这一点。谢谢你的回复。从表面上看这似乎很好,但我认为我不能使用它,因为它对于我的框架来说太重了。有很多依赖项基本上要求我在我的基础上使用整个Zend框架。我会继续考虑使用官方的谷歌API,这样我可以有一个更轻的扩展,除非你有其他想法。终于有机会做到这一点。谢谢你的回复。从表面上看这似乎很好,但我认为我不能使用它,因为它对于我的框架来说太重了。有很多依赖项基本上要求我在我的基础上使用整个Zend框架。我将继续考虑使用官方的谷歌API,这样我就可以有一个更轻的扩展,除非你有其他想法。