代码之家  ›  专栏  ›  技术社区  ›  Juan Bravo Roig

将geteditors和getviewers的结果写入Google工作表

  •  1
  • Juan Bravo Roig  · 技术社区  · 6 年前

    我想在电子表格中写一些来自驱动器文件的元数据。我得到所有者、名称、ID、URL等,但我在 file geteditors()和 file getviewers()方法方面遇到问题。

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

    < Buff行情>

    [ljava.lang.object@…..

    < /块引用>

    有人知道发生了什么吗?我是这些文件的所有者。

    我的脚本:

    函数getchildfolders(parentname,parent,data,sheet,listall){
    sheet.appendrow([“完整路径”,“名称”,“类型”,“url”,“访问”,“权限”,“编辑可以共享”,“所有者”,“可以编辑”,“可以评论”,“可以查看”]);
    
    var childfolders=parent.getfolders();
    var childfiles=parent.getfiles();
    
    while(childfiles.hasnext()){
    var fileitem=childfiles.next();
    
    数据=
    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()。
    ;
    
    //写
    sheet.appendrow(数据);
    }
    < /代码> <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 回复  |  直到 6 年前
        1
  •  1
  •   Tanaike    6 年前

    [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() . 成本 设置值() 低于 附件() . 那么这个修改呢?

    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
    

    参考文献: