Google API没有内置的PHP支持(显然不再支持Zend框架集成(。因此,我一直在使用Curl来读取和写入电子表格。像这个
我需要的大部分内容可以在这里找到:https://developers.google.com/google-apps/spreadsheets/在"协议"选项卡下。
然而,我现在想删除一行,文档显示要这样做:
删除https://spreadsheets.google.com/feeds/list/key/worksheetId/private/full/rowId/rowVersion
问题是Curl不支持delete
。我通常使用POST
或GET
。如何通过curl发出这样的命令?有没有其他方法可以通过curl删除列表行?
根据以下jeroen的回答,我尝试了以下方法:
$headers = array(
"Authorization: GoogleLogin auth=" . $auth,
"GData-Version: 3.0",
);
$curl = curl_init();
$curl_setopt($curl, CURLOPT_URL, "https://spreadsheets.google.com/feeds/list/key/0/private/full/1a8lrz");
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "DELETE");
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_VERBOSE, true);
$response = curl_exec($curl);
但我完全没有得到回应,一点错误都没有。我已经完全启用了错误报告,并且我用于身份验证的$auth
变量适用于对该电子表格的其他调用
您可以通过设置CURLOPT_CUSTOMREQUEST
选项来使用curl执行DELETE
请求,请参阅手册:
curl_setopt($your_curl_resource, CURLOPT_CUSTOMREQUEST, "DELETE");
应该更仔细地阅读谷歌的文档。我在标题中添加了"如果匹配":
$headers = array(
"Authorization: GoogleLogin auth=" . $auth,
"GData-Version: 3.0",
"If-Match: *",
);
奇怪的是,API根本不返回响应,但却删除了正确的行。