微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Google App Script File 类方法 getOwner() 始终为 Google 共享云端硬盘文件返回 null

如何解决Google App Script File 类方法 getOwner() 始终为 Google 共享云端硬盘文件返回 null

我正在尝试使用以下应用程序脚本提取文件详细信息。它适用于保存在我的驱动器中的所有文件或其他人与我共享的文件。对于共享驱动器文件var owner = file.getowner() 始终返回 null。除了 getowner() 之外,所有方法即使使用共享驱动器文件夹也能正常工作。如果我在这里做错了什么,请提出建议。

代码

function list_all_files_inside_one_folder_without_subfolders(){
  var sh = SpreadsheetApp.getActiveSheet();
  var folder = DriveApp.getFolderById('MyFolderID'); // I change the folder ID  here 
  var list = [];
  list.push(['Name','ID','URL','Size','Upload Date','Owner']);
  list_all_folders_of_folder(folder,list)
  
   sh.getRange(1,1,list.length,list[0].length).setValues(list);
}

function list_all_folders_of_folder(folder,list){
  var subfolder = folder.getFolders();
   while (subfolder.hasNext()) {
    folder = subfolder.next();
    list_all_files_of_folder(folder,list)
   }
}

function list_all_files_of_folder(folder,list){
  var  files = folder.getFiles()
  while (files.hasNext()){
      file = files.next();
      var row = []
      var owner = file.getowner()
      Logger.log(file.getName())
      Logger.log(owner)
      row.push(file.getName(),file.getId(),file.getUrl(),file.getSize(),file.getLastUpdated(),owner.getName() )
      list.push(row);
   }
}

解决方法

这是一种预期,因为使用共享云端硬盘会将文件的所有权转移给整个组织(不是用户或电子邮件地址),并且文件所有权将从用户中删除。

我认为有一种解决方法可以实施,但需要直接调用 DriveAPI 来检查文件活动(谁创建了文件),但这远远超出了基本脚本编写或在 GAS 上使用高级工作区服务的范围。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。