Define and Retrieve the Owner's Email Address in Drive API

195 views
Skip to first unread message

jmm0979

unread,
Sep 1, 2021, 2:03:00 AM9/1/21
to google-apps-sc...@googlegroups.com
Hi,

I am lost here and cannot figure out how to list the owner's email address.

My criterias are:
1. Search by partial folder name (no owner's email address)
2. Do not search trash
3. Only folders

I do not understand why the owner's email address cannot be pulled for the below scenario.
I keep getting these errors: TypeError: Cannot read property 'emailAddress' of undefined OR TypeError: Cannot read property '0' of undefined
If I only do "childFolder.owners", I get the owners' resources {displayName=name here, kind=drive#user, permissionId=permissionId here, picture={url="url here"}, emailAddress="email address here", isAuthenticatedUser=false}
I need some help on how to define and retrieve the owner's emailAddress.

Note: This works if I have entered the owner's email address (my query would be different:
var queryFolder2 = 'title contains "' + folderName2 + '" and "' + ownerFolder + '" in owners and trashed = false and mimeType = "application/vnd.google-apps.folder"';) and It does display the folder owner's email address.

Perhaps anyone can guide and help me here. I am currently using V2. Thanks!!!
do {
    var rows = [];
    var pageToken;
    var count = 0;

    var queryFolder1 = 'title contains "' + folderName2 + '" and trashed = false and mimeType = "application/vnd.google-apps.folder"';
    var driveFolders = Drive.Files.list({
      q: queryFolder1,
      maxResults: 500,
      pageToken: pageToken,
      orderBy: 'title',
      field: 'parents:[id]',
      includeItemsFromAllDrives: true,
      supportsAllDrives: true
    });

    /* Create new sheet to save the output */
    var newSheet = SpreadsheetApp.create(folderName2);
    var newSheetID = newSheet.getId();
    var newSheet1 = newSheet.getSheetByName('Sheet1');
    newSheet1.getRange('A2:J2').setValues([['Parent URL', 'File Name', 'File ID', 'File URL', "MimeType: File Type", 'Owner', 'Creation Date', 'Last Modified Date', 'Last Modified User', 'Last Modified User Email Address']]);

    /* Gather data */
    var driveFolder = driveFolders.items;
    if (driveFolder) {
      for (var x = 0; x < driveFolder.length; x++) {
        var childFolder = driveFolder[x];

        rows.push([childFolder.parents[0].id, childFolder.title, childFolder.id, childFolder.alternateLink, childFolder.mimeType, childFolder.owners[0].emailAddress, childFolder.createdDate, childFolder.modifiedDate, childFolder.lastModifyingUserName, childFolder.lastModifyingUser.emailAddress]);
      }
      newSheet1.getRange(3, 1, rows.length, rows[0].length).setValues(rows);
}

Clark Lind

unread,
Sep 1, 2021, 8:37:26 AM9/1/21
to Google Apps Script Community
Does it work if you remove the 0 from owners[0]?  Ref:

owners[]      list        The owner of this file. Only certain legacy files may have more than one owner. This field isn't populated for items in shared drives.
and

owners[].emailAddress   string    The email address of the user.

jmm0979

unread,
Sep 1, 2021, 11:23:01 AM9/1/21
to google-apps-sc...@googlegroups.com
Hi, There is a red mark here owners[].emailAddress when I removed the "0".

Is there a way to put a check that if owners.email exists the grab owner's email address and if there is none, then display blank?

--
You received this message because you are subscribed to the Google Groups "Google Apps Script Community" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-apps-script-c...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/google-apps-script-community/0cbb197d-c406-48fc-9d05-1764a8f313e7n%40googlegroups.com.
Reply all
Reply to author
Forward
0 new messages