返回文档所有者以获取大量Google云端硬盘详细信息ID

时间:2016-06-23 20:11:46

标签: google-apps-script google-sheets google-drive-api

我正在尝试识别Google云端硬盘中长文件列表(近1000项)的所有者。所有者可能因文档而异。我有每个项目的唯一文档ID。

我是我所在域的Google Apps管理员,并且有一个实用程序可以让我输入文档ID,并查看该特定项目的所有权。但是,我必须通过一个Web界面,一次一个。

有没有办法利用谷歌的API,比如在电子表格中,可以在给出文档ID时返回文档的所有者?或谷歌脚本?

2 个答案:

答案 0 :(得分:0)

可以在Apps脚本中完成。

Class File

  

Google云端硬盘中的文件。可以从DriveApp访问或创建文件。

代码示例

var files = DriveApp.getId('DOC_ID');
while (files.hasNext()) {
var file = files.next();

var owner = file.getOwner()

}

getOwner()

  

获取File的所有者。

     

返回

     

User - 代表所有者的User个对象

希望这有帮助。

答案 1 :(得分:0)

与我的同事合作,生成以下适用的Google Apps脚本。

用法:使用D列中的文档ID列表,突出显示要检查的行(任何单元格都正常,只需在所需行中突出显示某些内容),然后使用自定义“自动化”菜单执行。

结果:然后在E列中返回所有者。

function getOwnerFromValue(val){
  var doc = DriveApp.getFileById(val);
  var user = doc.getOwner();
  return user;
}


function scanRange() {
var range = SpreadsheetApp.getActiveRange();
  var start = range.getRow();
  var stop = range.getLastRow();
  var range = SpreadsheetApp.getActive().getRange("D"+start+":D"+stop)
  var resultRange = SpreadsheetApp.getActive().getRange("E"+start+":E"+stop);
  var result = [];
  range.getValues().forEach(function(obj){
    obj = obj[0];
    if(obj.trim() != "")
      result.push([getOwnerFromValue(obj).getEmail()]);
  });
  resultRange.setValues(result);
}

function onOpen(){
  var sheet = SpreadsheetApp.getActiveSpreadsheet();
  var entries = [{
    name : "Get Owners' User",
    functionName : "scanRange"
  }];
    sheet.addMenu("Automation",entries);
}


function onAdd(e){
  var editted = e.range;
  if(editted.getRow() != 1 && editted.getColumn() == 4) {
    Logger.log(getOwnerFromValue(editted.getValue()));
  }
}