将getEditors和getViewers的结果写入Google表格

时间:2018-08-14 07:49:54

标签: google-apps-script

我想从电子表格中的云端硬盘文件中写入一些元数据。我获得了所有者,名称,ID,URL等,但是我在File#getEditors()File#getViewers()方法上遇到了问题。

我将这个值写在编辑器和查看器结果写入的单元格中:

  

[Ljava.lang.Object @ ....

enter image description here 有人知道发生了什么吗?我是文件的所有者。

我的脚本:

function getChildFolders(parentName, parent, data, sheet, listAll) {
  sheet.appendRow(["Full Path", "Name", "Type", "URL", "Access", "Permission", "Editors can share", "Owner", "Can edit", "Can comment", "Can view"]);

  var childFolders = parent.getFolders();
  var childFiles = parent.getFiles();

  while (childFiles.hasNext()) {
    var fileItem = childFiles.next();

    data = [
      parentName + "/" + fileItem.getName() + "/" + fileItem.getName(),
      fileItem.getName(),
      fileItem.getMimeType(),
      fileItem.getUrl(),
      fileItem.getAccess(Session.getActiveUser()),
      fileItem.getSharingPermission(),
      fileItem.isShareableByEditors(),
      fileItem.getOwner().getEmail(),
      fileItem.getEditors(),
      fileItem.getViewers()
    ];

    // Write      
    sheet.appendRow(data);
}

1 个答案:

答案 0 :(得分:1)

[Ljava.lang.Object表示对象。 fileItem.getEditors()fileItem.getViewers()是对象。每个对象都返回User[]。您可以从中检索以下值。

  • getDomain():获取与用户帐户关联的域名。
  • getEmail():获取用户的电子邮件地址。
  • getName():获取用户名。
  • getPhotoUrl():获取用户照片的URL。

例如,如果检索到电子邮件以及编辑者和查看者的姓名,该修改如何?

修改后的脚本:

请进行如下修改。

来自:
fileItem.getEditors(),
fileItem.getViewers()
至 :
fileItem.getEditors().map(function(e){return [e.getEmail(), e.getName()]}).join(","),
fileItem.getViewers().map(function(e){return [e.getEmail(), e.getName()]}).join(","),

注意:

  • 这是一个示例。因此,请根据您的情况进行修改。

参考文献:

如果这不是您想要的,请告诉我。我想修改它。

已添加:

这是使用setValues()而非appendRow()的示例修改脚本。 setValues()的成本低于appendRow()的成本。那修改又如何呢?

sheet.appendRow(["Full Path", "Name", "Type", "URL", "Access", "Permission", "Editors can share", "Owner", "Can edit", "Can comment", "Can view"]);
var childFolders = parent.getFolders();
var childFiles = parent.getFiles();
var allValues = []; // Added
while (childFiles.hasNext()){
  var fileItem = childFiles.next();
  data = [
    parentName + "/" + fileItem.getName() + "/" + fileItem.getName(),
    fileItem.getName(),
    fileItem.getMimeType(),
    fileItem.getUrl(),
    fileItem.getAccess(Session.getActiveUser()),
    fileItem.getSharingPermission(),
    fileItem.isShareableByEditors(),
    fileItem.getOwner().getEmail(),
    fileItem.getEditors().map(function(e){return [e.getEmail(), e.getName()]}).join(","),
    fileItem.getViewers().map(function(e){return [e.getEmail(), e.getName()]}).join(","),
  ];
  allValues.push(data); // Added
}
sheet.getRange(sheet.getLastRow() + 1, 1, allValues.length, allValues[0].length).setValues(allValues); // Added

参考: