Created
June 23, 2015 11:24
-
-
Save cheeming/1717e35b9258fc9c0133 to your computer and use it in GitHub Desktop.
Recursively change the files in your Google Drive folder to be private (only specific people can access) instead of anyone at domain can find and view
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
"""Delete domain permission from your Google Drive files. | |
The reason why I created this script is so that I can use this script to | |
recursively remove the domain permission item from all files. | |
By default, Google Drive will share files to all users in the domain (this | |
setting is recognised as the domain permission type for the file in | |
Google Drive). I don't really want certain files to be shared this way, but | |
there is no easy way recursively fix this in Google Drive, so that is why | |
this script is created. | |
Usage: | |
python delete_domain_permission.py FOLDER_ID | |
FOLDER_ID is the alpha-numeric ID that is found on the URL, e.g. | |
0B217z8PSk4D4dU7ZeHdtUmxsdFk | |
If you want to scan through all the folders you can use "root" as the | |
FOLDER_ID. | |
Dependencies: | |
* PyDrive==1.0.0 | |
Tested with Python2.7.6 | |
""" | |
from pydrive.auth import GoogleAuth | |
from pydrive.drive import GoogleDrive | |
drive = None | |
def main(file_id): | |
gauth = GoogleAuth() | |
gauth.LocalWebserverAuth() | |
global drive | |
drive = GoogleDrive(gauth) | |
list_files(gdrive_get_children(file_id)) | |
def list_files(results, tab_count=0): | |
for file_list in results: | |
for f in file_list: | |
print_file(f, tab_count) | |
if f['mimeType'] == 'application/vnd.google-apps.folder': | |
list_files(gdrive_get_children(f['id']), tab_count=tab_count+1) | |
def gdrive_get_children(file_id): | |
return drive.ListFile( | |
{'q': "'{}' in parents".format(file_id), 'maxResults': 100}) | |
def print_file(f, tab_count): | |
s_perms = f.auth.service.permissions() | |
perms = s_perms.list(fileId=f['id']).execute() | |
unique_perm_types = list(set([p['type'] for p in perms['items']])) | |
def _print_item(prefix): | |
print('{}{}: {}, id: {}, perm: {}'.format( | |
'\t' * tab_count, prefix, f['title'], f['id'], unique_perm_types)) | |
if f['mimeType'] == 'application/vnd.google-apps.folder': | |
_print_item('FOLDER') | |
else: | |
_print_item(' + FILE') | |
for p in perms['items']: | |
if p['type'] == 'domain': | |
print('DELETING domain permission, {}'.format(p['id'])) | |
s_perms.delete(fileId=f['id'], permissionId=p['id']).execute() | |
if __name__ == '__main__': | |
import sys | |
file_id = sys.argv[1] | |
main(file_id) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment