Google 雲端硬碟中的檔案。您可以透過 DriveApp
存取或建立檔案。
// Trash every untitled spreadsheet that hasn't been updated in a week. const files = DriveApp.getFilesByName('Untitled spreadsheet'); while (files.hasNext()) { const file = files.next(); if (new Date() - file.getLastUpdated() > 7 * 24 * 60 * 60 * 1000) { file.setTrashed(true); } }
方法
內容詳盡的說明文件
addCommenter(emailAddress)
將指定使用者新增至 File
的留言者清單。如果使用者已在觀看者名單中,這個方法會將使用者從觀看者名單中移除。
const files = DriveApp.getFilesByName('Test'); // Loops through the files while (files.hasNext()) { const file = files.next(); file.addCommenter('hello@example.com'); }
參數
名稱 | 類型 | 說明 |
---|---|---|
emailAddress | String | 要新增的使用者電子郵件地址。 |
回攻員
授權
使用這個方法的腳本需要具備下列一或多個範圍的授權:
-
https://www.googleapis.com/auth/drive
addCommenter(user)
將指定使用者新增至 File
的留言者清單。如果使用者已在觀看者名單中,這個方法會將使用者從觀看者名單中移除。
// Gets a list of all files in Google Drive with the given name. // TODO(developer): Replace the file name with your own. const files = DriveApp.getFilesByName('Test'); // Adds the active user as a commenter. while (files.hasNext()) { const file = files.next(); file.addCommenter(Session.getActiveUser()); }
參數
名稱 | 類型 | 說明 |
---|---|---|
user | User | 要新增的使用者代表。 |
回攻員
授權
使用這個方法的腳本需要具備下列一或多個範圍的授權:
-
https://www.googleapis.com/auth/drive
addCommenters(emailAddresses)
將指定的使用者陣列新增至 File
的留言者清單。如果有任何使用者已在觀眾名單中,這個方法會將他們從觀眾名單中移除。
// Gets a list of all files in Google Drive with the given name. // TODO(developer): Replace the file name with your own. const files = DriveApp.getFilesByName('Test'); while (files.hasNext()) { const file = files.next(); // TODO(developer): Replace 'cloudysanfrancisco@gmail.com' and // 'baklavainthebalkans@gmail.com' with the email addresses to add as // commenters. const emails = [ 'cloudysanfrancisco@gmail.com', 'baklavainthebalkans@gmail.com', ]; console.log(file.addCommenters(emails)); }
參數
名稱 | 類型 | 說明 |
---|---|---|
emailAddresses | String[] | 要新增的使用者電子郵件地址陣列。 |
回攻員
授權
使用這個方法的腳本需要具備下列一或多個範圍的授權:
-
https://www.googleapis.com/auth/drive
addEditor(emailAddress)
addEditor(user)
addEditors(emailAddresses)
addViewer(emailAddress)
addViewer(user)
addViewers(emailAddresses)
getAccess(email)
取得授予特定使用者的權限。這個方法不支援傳回 Google 群組的權限,或透過 Google 群組繼承的權限。
參數
名稱 | 類型 | 說明 |
---|---|---|
email | String | 需要檢查權限的使用者電子郵件地址。不支援 Google 網路論壇。 |
回攻員
Permission
:授予使用者的權限。
授權
使用這個方法的腳本需要具備下列一或多個範圍的授權:
-
https://www.googleapis.com/auth/drive.readonly
-
https://www.googleapis.com/auth/drive
getAccess(user)
取得授予特定使用者的權限。這個方法不支援傳回 Google 群組的權限,或透過 Google 群組繼承的權限。
參數
名稱 | 類型 | 說明 |
---|---|---|
user | User | 代表應檢查權限的使用者。 |
回攻員
Permission
:授予使用者的權限。
授權
使用這個方法的腳本需要具備下列一或多個範圍的授權:
-
https://www.googleapis.com/auth/drive.readonly
-
https://www.googleapis.com/auth/drive
getAs(contentType)
將此物件內的資料傳回為轉換為指定內容類型的 Blob。這個方法會在檔案名稱中加入適當的副檔名,例如「myfile.pdf」。不過,這會假設檔案名稱中最後一個句點 (如有) 後面的部分是應取代的現有副檔名。因此,「ShoppingList.12.25.2014」會變成「ShoppingList.12.25.pdf」。
如要查看轉換的每日配額,請參閱「Google 服務的配額」。新建立的 Google Workspace 網域可能會暫時受到較嚴格的配額限制。
參數
名稱 | 類型 | 說明 |
---|---|---|
contentType | String | 要轉換的 MIME 類型。對於大多數 Blob 而言,'application/pdf' 是唯一有效的選項。如果是 BMP、GIF、JPEG 或 PNG 格式的圖片,'image/bmp' 、'image/gif' 、'image/jpeg' 或 'image/png' 皆可用。如果是 Google 文件,'text/markdown' 也是有效的。 |
回攻員
Blob
:資料為 Blob。
getBlob()
getDateCreated()
getDescription()
getDownloadUrl()
取得可用於下載檔案的網址。只有具備在 Google 雲端硬碟中開啟檔案權限的使用者,才能存取網址。您可以在瀏覽器中使用這個網址下載檔案,但無法使用 UrlFetchApp
擷取檔案。如果您想在指令碼中使用檔案的內容,請使用 getBlob()
。
// Gets a list of all files in Google Drive with the given name. // TODO(developer): Replace the file name with your own. const files = DriveApp.getFilesByName('Test'); // Loops through the files and logs the download URLs to the console. while (files.hasNext()) { const file = files.next(); console.log(file.getDownloadUrl()); }
回攻員
String
:可用來下載檔案的網址。
授權
使用這個方法的腳本需要具備下列一或多個範圍的授權:
-
https://www.googleapis.com/auth/drive.readonly
-
https://www.googleapis.com/auth/drive
getEditors()
取得這個 File
的編輯者清單。如果執行指令碼的使用者沒有 File
的編輯存取權,這個方法會傳回空陣列。
// Gets a list of all files in Google Drive with the given name. // TODO(developer): Replace the file name with your own. const files = DriveApp.getFilesByName('Test'); // Loops through the files. while (files.hasNext()) { const file = files.next(); // Adds the email addresses in the array as editors of each file. // TODO(developer): Replace 'cloudysanfrancisco@gmail.com' // and 'baklavainthebalkans@gmail.com' with valid email addresses. file.addEditors([ 'cloudysanfrancisco@gmail.com', 'baklavainthebalkans@gmail.com', ]); // Gets a list of the file editors. const editors = file.getEditors(); // For each file, logs the editors' email addresses to the console. for (const editor of editors) { console.log(editor.getEmail()); } }
回攻員
User[]
:如果使用者擁有此 File
的編輯權限,則會傳回編輯者清單。如果使用者沒有編輯權限,則會傳回空陣列。
授權
使用這個方法的腳本需要具備下列一或多個範圍的授權:
-
https://www.googleapis.com/auth/drive.readonly
-
https://www.googleapis.com/auth/drive
getId()
getLastUpdated()
getMimeType()
取得檔案的 MIME 類型。
// Gets a list of all files in Google Drive with the given name. // TODO(developer): Replace the file name with your own. const files = DriveApp.getFilesByName('Test'); // Loops through the files and logs the MIME type to the console. while (files.hasNext()) { const file = files.next(); console.log(file.getMimeType()); }
回攻員
String
:檔案的 MIME 類型。
授權
使用這個方法的腳本需要具備下列一或多個範圍的授權:
-
https://www.googleapis.com/auth/drive.readonly
-
https://www.googleapis.com/auth/drive
getName()
getOwner()
取得檔案擁有者。
// Gets a list of all files in Google Drive with the given name. // TODO(developer): Replace the file name with your own. const files = DriveApp.getFilesByName('Test'); // Loops through the files and logs the names of the file owners to the console. while (files.hasNext()) { const file = files.next(); console.log(file.getOwner().getName()); }
回攻員
User
:檔案擁有者。
授權
使用這個方法的腳本需要具備下列一或多個範圍的授權:
-
https://www.googleapis.com/auth/drive.readonly
-
https://www.googleapis.com/auth/drive
getParents()
取得 File
的直接父項資料夾集合。
回攻員
FolderIterator
:File
的直屬父項資料夾集合
授權
使用這個方法的腳本需要具備下列一或多個範圍的授權:
-
https://www.googleapis.com/auth/drive.readonly
-
https://www.googleapis.com/auth/drive
getResourceKey()
getSecurityUpdateEligible()
取得這個 File
是否符合套用安全性更新的資格。當檔案透過連結共用時,需要提供資源金鑰才能存取。
雲端硬碟需要資源金鑰,才能存取使用連結共用的部分檔案或資料夾。這項變更是安全性更新的一部分。系統會預設為符合資格的檔案和資料夾啟用更新功能。如要針對符合資格的檔案開啟或關閉資源金鑰需求,請使用 setSecurityUpdateEnabled
。
進一步瞭解 Google 雲端硬碟安全性更新。
回攻員
Boolean
:資源鍵需求是否可套用至 File
。
授權
使用這個方法的腳本需要具備下列一或多個範圍的授權:
-
https://www.googleapis.com/auth/drive.readonly
-
https://www.googleapis.com/auth/drive
getSecurityUpdateEnabled()
取得這個 File
在使用連結分享時,是否需要資源索引鍵才能存取。系統預設會為符合資格的檔案和資料夾啟用這項要求。如要針對符合資格的檔案開啟或關閉資源金鑰需求,請使用
setSecurityUpdateEnabled
。
進一步瞭解 Google 雲端硬碟安全性更新。
回攻員
Boolean
:是否為此 File
啟用資源鍵需求。
授權
使用這個方法的腳本需要具備下列一或多個範圍的授權:
-
https://www.googleapis.com/auth/drive.readonly
-
https://www.googleapis.com/auth/drive
getSharingAccess()
getSharingPermission()
除了明確授予存取權的個別使用者之外,還可取得授予 File
存取權的使用者所擁有的權限。
回攻員
Permission
:授予可存取 File
的使用者權限
授權
使用這個方法的腳本需要具備下列一或多個範圍的授權:
-
https://www.googleapis.com/auth/drive.readonly
-
https://www.googleapis.com/auth/drive
getSize()
getTargetId()
如果這是捷徑,則會傳回所指項目的 ID。
否則會傳回 null
。
// The ID of the file for which to make a shortcut and the ID of // the folder to which you want to add the shortcut. // TODO(developer): Replace the file and folder IDs with your IDs. const fileId = 'abc123456'; const folderId = 'xyz987654'; // Gets the folder to add the shortcut to. const folder = DriveApp.getFolderById(folderId); // Creates a shortcut of the file and moves it to the specified folder. const shortcut = DriveApp.createShortcut(fileId).moveTo(folder); // Logs the target ID of the shortcut. console.log(`${shortcut.getName()}=${shortcut.getTargetId()}`);
回攻員
String
:目標項目 ID。
getTargetMimeType()
如果這是捷徑,則會傳回所指項目的 mime 類型。
否則會傳回 null
。
// The ID of the file for which to make a shortcut and the ID of // the folder to which you want to add the shortcut. // TODO(developer): Replace the file and folder IDs with your IDs. const fileId = 'abc123456'; const folderId = 'xyz987654'; // Gets the folder to add the shortcut to. const folder = DriveApp.getFolderById(folderId); // Creates a shortcut of the file and moves it to the specified folder. const shortcut = DriveApp.createShortcut(fileId).moveTo(folder); // Logs the MIME type of the file that the shortcut points to. console.log(`MIME type of the shortcut: ${shortcut.getTargetMimeType()}`);
回攻員
String
:目標項目的 MIME 類型。
getTargetResourceKey()
如果檔案是捷徑,則會傳回該捷徑所指向項目的資源鍵。資源鍵是您需要傳遞的額外參數,用於存取使用連結共用的檔案。
如果檔案不是捷徑,則會傳回 null
。
// Gets a file by its ID. // TODO(developer): Replace 'abc123456' with your file ID. const file = DriveApp.getFileById('abc123456'); // If the file is a shortcut, returns the resource key of the file that it // points to. console.log(file.getTargetResourceKey());
回攻員
String
:目標項目的資源鍵,如果檔案不是捷徑,則為 null
。
授權
使用這個方法的腳本需要具備下列一或多個範圍的授權:
-
https://www.googleapis.com/auth/drive.readonly
-
https://www.googleapis.com/auth/drive
getThumbnail()
取得檔案的縮圖圖片,如果沒有縮圖則會取得 null
。
// Gets a list of all files in Google Drive with the given name. // TODO(developer): Replace the file name with your own. const files = DriveApp.getFilesByName('Test'); // Loops through the files. while (files.hasNext()) { const file = files.next(); // Logs the thumbnail image for each file to the console as a blob, // or null if no thumbnail exists. console.log(file.getThumbnail()); }
回攻員
Blob
:檔案的縮圖。
授權
使用這個方法的腳本需要具備下列一或多個範圍的授權:
-
https://www.googleapis.com/auth/drive.readonly
-
https://www.googleapis.com/auth/drive
getUrl()
getViewers()
取得這個 File
的檢視者和加註者清單。如果執行指令碼的使用者沒有 File
的編輯存取權,這個方法會傳回空陣列。
// Gets a list of all files in Google Drive with the given name. // TODO(developer): Replace the file name with your own. const files = DriveApp.getFilesByName('Test'); // Loops through the files. while (files.hasNext()) { const file = files.next(); // For each file, logs the viewers' email addresses to the console. const viewers = file.getViewers(); for (const viewer of viewers) { console.log(viewer.getEmail()); } }
回攻員
User[]
:如果使用者擁有此 File
的編輯權限,則會傳回觀看者和評論者的清單。如果使用者沒有編輯權限,則會傳回空陣列。
授權
使用這個方法的腳本需要具備下列一或多個範圍的授權:
-
https://www.googleapis.com/auth/drive.readonly
-
https://www.googleapis.com/auth/drive
isStarred()
isTrashed()
makeCopy()
建立檔案副本。
// Gets a list of all files in Google Drive with the given name. // TODO(developer): Replace the file name with your own. const files = DriveApp.getFilesByName('Test'); // Loops through the files. while (files.hasNext()) { const file = files.next(); // Creates a copy of each file and logs the file name to the console. console.log(file.makeCopy().getName()); }
回攻員
File
:新副本。
授權
使用這個方法的腳本需要具備下列一或多個範圍的授權:
-
https://www.googleapis.com/auth/drive
makeCopy(destination)
在目的地目錄中建立檔案副本。
// Gets a list of all files in Google Drive with the given name. // TODO(developer): Replace the file name with your own. const files = DriveApp.getFilesByName('Test'); // Loops through the files. while (files.hasNext()) { const file = files.next(); // Creates a copy of each file and adds it to the specified folder. // TODO(developer): Replace the folder ID with your own. const destination = DriveApp.getFolderById('123456abcxyz'); const copiedFile = file.makeCopy(destination); // Logs the file names to the console. console.log(copiedFile.getName()); }
參數
名稱 | 類型 | 說明 |
---|---|---|
destination | Folder | 要複製檔案的目錄。 |
回攻員
File
:新副本。
授權
使用這個方法的腳本需要具備下列一或多個範圍的授權:
-
https://www.googleapis.com/auth/drive
makeCopy(name)
建立檔案副本,並使用提供的名稱命名。
// Gets a list of all files in Google Drive with the given name. // TODO(developer): Replace the file name with your own. const files = DriveApp.getFilesByName('Test'); // Loops through the files. while (files.hasNext()) { const file = files.next(); // Creates a copy of each file and sets the name to 'Test-Copy.' const filename = file.makeCopy('Test-Copy'); // Logs the copied file's name to the console. console.log(filename.getName()); }
參數
名稱 | 類型 | 說明 |
---|---|---|
name | String | 應套用至新副本的檔案名稱。 |
回攻員
File
:新副本。
授權
使用這個方法的腳本需要具備下列一或多個範圍的授權:
-
https://www.googleapis.com/auth/drive
makeCopy(name, destination)
在目的地目錄中建立檔案副本,並使用提供的名稱命名。
// Gets a list of all files in Google Drive with the given name. // TODO(developer): Replace the file name with your own. const files = DriveApp.getFilesByName('Test'); // Loops through the files. while (files.hasNext()) { const file = files.next(); // Creates a copy of each file, sets the file name, and adds the copied file // to the specified folder. // TODO(developer): Replace the folder ID with your own. const destination = DriveApp.getFolderById('123456abcxyz'); const copiedFile = file.makeCopy('Test-Copy', destination); // Logs the file names to the console. console.log(copiedFile.getName()); }
參數
名稱 | 類型 | 說明 |
---|---|---|
name | String | 應套用至新副本的檔案名稱。 |
destination | Folder | 要複製檔案的目錄。 |
回攻員
File
:新副本。
授權
使用這個方法的腳本需要具備下列一或多個範圍的授權:
-
https://www.googleapis.com/auth/drive
moveTo(destination)
removeCommenter(emailAddress)
將指定使用者從 File
的留言者清單中移除。如果使用者屬於具有一般存取權的使用者類別,這個方法就不會阻止使用者存取 File
,例如,如果 File
與使用者的整個網域共用。
// Gets a list of all files in Google Drive with the given name. // TODO(developer): Replace the file name with your own. const files = DriveApp.getFilesByName('Test'); // Loops through the files. while (files.hasNext()) { const file = files.next(); // Removes the given user from the list of commenters for each file. // TODO(developer): Replace the email with the email of the user you want to // remove. file.removeCommenter('cloudysanfrancisco@gmail.com'); }
參數
名稱 | 類型 | 說明 |
---|---|---|
emailAddress | String | 要移除的使用者電子郵件地址。 |
回攻員
授權
使用這個方法的腳本需要具備下列一或多個範圍的授權:
-
https://www.googleapis.com/auth/drive
removeCommenter(user)
將指定使用者從 File
的留言者清單中移除。如果使用者屬於具有一般存取權的使用者類別,這個方法就不會阻止使用者存取 File
,例如,如果 File
與使用者的整個網域共用。
// Gets a list of all files in Google Drive with the given name. // TODO(developer): Replace the file name with your own. const files = DriveApp.getFilesByName('Test'); // Loops through the files. while (files.hasNext()) { const file = files.next(); // Removes the given user from the list of commenters for each file. console.log(file.removeCommenter(Session.getActiveUser())); }
參數
名稱 | 類型 | 說明 |
---|---|---|
user | User | 要移除的使用者。 |
回攻員
授權
使用這個方法的腳本需要具備下列一或多個範圍的授權:
-
https://www.googleapis.com/auth/drive
removeEditor(emailAddress)
removeEditor(user)
removeViewer(emailAddress)
removeViewer(user)
revokePermissions(emailAddress)
revokePermissions(user)
setContent(content)
使用指定的替換字串覆寫檔案內容。如果 content
大於 10 MB,系統會擲回例外狀況。
// Creates a text file with the content 'Hello, world!' const file = DriveApp.createFile('New Text File', 'Hello, world!'); // Logs the content of the text file to the console. console.log(file.getBlob().getDataAsString()); // Updates the content of the text file to 'Updated text!' file.setContent('Updated text!'); // Logs content of the text file to the console. console.log(file.getBlob().getDataAsString());
參數
名稱 | 類型 | 說明 |
---|---|---|
content | String | 檔案的新內容。 |
回攻員
授權
使用這個方法的腳本需要具備下列一或多個範圍的授權:
-
https://www.googleapis.com/auth/drive
setDescription(description)
setName(name)
setOwner(emailAddress)
setOwner(user)
setSecurityUpdateEnabled(enabled)
setSharing(accessType, permissionType)
除了明確授予存取權的個別使用者外,此屬性還可設定哪些使用者類別可存取 File
,以及授予這些使用者的權限。
// Creates a folder that anyone on the Internet can read from and write to. // (Domain administrators can prohibit this setting for users of a Google // Workspace domain.) const folder = DriveApp.createFolder('Shared Folder'); folder.setSharing(DriveApp.Access.ANYONE, DriveApp.Permission.EDIT);
參數
名稱 | 類型 | 說明 |
---|---|---|
accessType | Access | 哪些使用者類別應可存取 File |
permissionType | Permission | 應授予可存取 File 的使用者權限 |
回攻員
授權
使用這個方法的腳本需要具備下列一或多個範圍的授權:
-
https://www.googleapis.com/auth/drive