如果其中没有文件,请删除文件夹-Google云端硬盘API 修改后的脚本:注意:参考:

问题描述

我目前具有以下功能

function deleteFileUsingID($fileID) {
    $this->service->files->delete($fileID);
}

我该如何修改它,以使删除后,如果该文件夹中没有文件,它将删除文件夹本身。

解决方法

我相信您的目标如下。

  • 当特定文件夹中没有文件时,您要删除该文件夹。

在这种情况下,您可以使用Drive API中的“文件:列表”方法检查文件是否在文件夹中。

修改后的脚本:

请将文件夹ID设置为$folderId = '###';

function deleteFileUsingID($fileID) {
    $this->service->files->delete($fileID);

    $folderId = '###';  // Please set the folder ID.
    $fileList = $this->service->files->listFiles(array("q" => "'{$folderId}' in parents"));
    if (count($fileList->getFiles()) == 0) {
        $this->service->files->delete($folderId);
    }
}

或者,当您要从$fileID检索文件夹ID时,也可以使用以下脚本。

function deleteFileUsingID($fileID) {
    $folderIds = $this->service->files->get($fileID,array("fields" => "parents"))->getParents();

    $this->service->files->delete($fileID);

    if (count($folderIds) > 0) {
        $folderId = $folderIds[0];
        $fileList = $this->service->files->listFiles(array("q" => "'{$folderId}' in parents"));
        if (count($fileList->getFiles()) == 0) {
            $this->service->files->delete($folderId);
        }
    }
}
  • 在此经过修改的脚本中,运行$this->service->files->delete($fileID);后,它将使用“文件:列表”方法检查文件是否在文件夹中。如果文件夹中没有文件,则该文件夹将被删除。

注意:

  • 在这种情况下,文件夹被删除。所以请注意这一点。我建议使用示例文件夹来测试脚本。

参考: