用PHP删除谷歌电子表格中的行;卷曲


Delete Row in Google spredsheet with PHP & Curl

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。我通常使用POSTGET。如何通过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根本不返回响应,但却删除了正确的行。