iT邦幫忙

2024 iThome 鐵人賽

DAY 22
0
IT 管理

30 天玩轉 GAS: 打造你的個人自動化助手系列 第 22

[Day 22] GAS - Google Drive 操作大全 Part2 - 權限管理

  • 分享至 

  • xImage
  •  

Google Drive 的 權限管理讓我們控制誰可以存取、編輯或分享我們的檔案和資料夾
在 GAS 中, 我們可以透過 DriveApp 類別來管理這些權限!

以下是一些常用的權限管理方法:

  1. 取得檔案或資料夾的權限: getSharingPermission()
function getPermissions() {
  var file = DriveApp.getFileById('FILE_ID');
  var permission = file.getSharingPermission();
  Logger.log('Current sharing permission is: ' + permission);
}
  1. 設定檔案或資料夾的權限: setSharing()
  • 設定為大家都可以檢視的權限
function setPermissions() {
  var file = DriveApp.getFileById('FILE_ID');
  file.setSharing(DriveApp.Access.ANYONE_WITH_LINK, DriveApp.Permission.VIEW);
  Logger.log('File is now accessible by anyone with the link');
}
  1. 新增使用者權限: addEditor()
function addUserPermission() {
  var file = DriveApp.getFileById('FILE_ID');
  file.addEditor('user@example.com');
  Logger.log('Editor permission granted to user@example.com');
}
  1. 移除使用者權限: removeEditor
function removeUserPermission() {
  var file = DriveApp.getFileById('FILE_ID');
  file.removeEditor('user@example.com');
  Logger.log('Editor permission removed from user@example.com');
}
  1. 取得所有具有權限的使用者: getEditors() getViewers()
function getAllPermissionUsers() {
  var file = DriveApp.getFileById('FILE_ID');
  var editors = file.getEditors();
  var viewers = file.getViewers();
  
  Logger.log('Editors:');
  for (var i = 0; i < editors.length; i++) {
    Logger.log(editors[i].getEmail());
  }
  
  Logger.log('Viewers:');
  for (var i = 0; i < viewers.length; i++) {
    Logger.log(viewers[i].getEmail());
  }
}

進階管理 - 可以改變檔案/資料夾的擁有者嗎?

Google Apps Script 的 DriveApp 類並不提供更換擁有者的功能
因為這項操作涉及更高的權限管理,但能透過 Google Drive 的進階 API(Drive API v2)來進行。

要更換檔案的擁有者,您可以使用 Drive API v3,具體步驟如下:

  1. 修改 Google Apps Script 設定

    • 在 Google Apps Script 編輯器中,點擊 服務 > 進階的Google服務,啟用 Drive API v2
  2. 使用 Drive API v2 更換擁有者

function transferOwnership() {
  var fileId = 'FILE_ID'; // 要更換擁有者的檔案ID
  var newOwnerEmail = 'newowner@example.com'; // 新擁有者的電子郵件
  
  var permissions = Drive.Permissions.insert(
    {
      'role': 'owner',          // 設定為擁有者
      'type': 'user',
      'value': newOwnerEmail,
      'transferOwnership': true // 這個屬性要設為 true,表示移交擁有權
    },
    fileId,
    {
      'supportsAllDrives': true // 支援共享網路磁碟
    }
  );
  
  Logger.log('Ownership transferred to ' + newOwnerEmail);
}

這段程式碼會將檔案的擁有權移交給指定的使用者
如果您沒有適當的權限或嘗試移交給不是同一 Google Workspace 網域的使用者,這項操作可能不會成功唷!

注意事項

使用GAS管理 Google Drive 權限時, 有幾個重要的注意事項:

  1. 權限變更可能需要一些時間才會生效,特別是對於大型檔案或資料夾。
  2. 某些權限變更可能會受到您組織的Google Workspace政策限制。
    • 有些 Workspace 中的檔案不能把擁有者更改為組織外的人

學會操作跟權限管理後,那就來實戰演練吧!


上一篇
[Day 21] GAS - Google Drive 操作大全 Part1 - 建立/讀取/更新/刪除 (CRUD)
下一篇
[Day 23] GAS - Google Drive 實戰演練 - 團隊檔案權限管理小幫手
系列文
30 天玩轉 GAS: 打造你的個人自動化助手30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言