เอกสารนี้อธิบายวิธีใช้ Google Drive API เพื่อรองรับไดรฟ์ที่แชร์ในแอป
ไดรฟ์ที่แชร์มีรูปแบบการจัดระเบียบ การแชร์ และการเป็นเจ้าของที่แตกต่างจากไดรฟ์ของฉัน หากแอปของคุณจะสร้างและจัดการไฟล์ในไดรฟ์ที่แชร์ คุณต้องรองรับไดรฟ์ที่แชร์ในแอป ความซับซ้อนของการใช้งานจะขึ้นอยู่กับฟังก์ชันการทำงานของแอป
หากต้องการเริ่มต้น คุณต้องใส่พารามิเตอร์การค้นหา supportsAllDrives=true ในคำขอเมื่อแอปดำเนินการต่อไปนี้
Drive API เวอร์ชัน 3
files.getfiles.listfiles.createfiles.updatefiles.copyfiles.deletechanges.listchanges.getStartPageTokenpermissions.listpermissions.getpermissions.createpermissions.updatepermissions.delete
Drive API เวอร์ชัน 2
files.getfiles.listfiles.insertfiles.updatefiles.patchfiles.copyfiles.trashfiles.untrashfiles.deletefiles.touchchildren.insertparents.insertchanges.listchanges.getStartPageTokenchanges.getpermissions.listpermissions.getpermissions.insertpermissions.updatepermissions.patchpermissions.delete
พารามิเตอร์ supportsAllDrives=true จะแจ้งให้ Google ไดรฟ์ทราบว่าแอปของคุณได้รับการออกแบบมาเพื่อจัดการไฟล์ในไดรฟ์ที่แชร์
แอปที่อ่านหรือแก้ไขสิทธิ์ ติดตามการเปลี่ยนแปลง หรือค้นหาในหลายคลังข้อมูลต้องมีความสามารถเพิ่มเติมในการใช้ไดรฟ์ที่แชร์ ส่วนที่เหลือของเอกสารนี้จะไฮไลต์การเปลี่ยนแปลงเพิ่มเติมที่จำเป็นในการทำงานเหล่านี้
ค้นหาเนื้อหาในไดรฟ์ที่แชร์
ใช้เมธอด list ในแหล่งข้อมูล files เพื่อค้นหาไฟล์ของผู้ใช้ในไดรฟ์ที่แชร์ หากต้องการ
ค้นหาไดรฟ์ที่แชร์ โปรดดูค้นหาไดรฟ์ที่
แชร์
เมธอด list มีพารามิเตอร์การค้นหาเฉพาะไดรฟ์ที่แชร์ดังนี้
driveId: รหัสของไดรฟ์ที่แชร์ที่จะค้นหาcorpora: เนื้อหาของรายการ (ไฟล์หรือเอกสาร) ที่การค้นหามีผล เนื้อหาที่รองรับ ได้แก่user,domain,driveและallDrivesควรใช้userหรือdriveแทนallDrivesเพื่อประสิทธิภาพ โดยค่าเริ่มต้น corpora จะตั้งค่าเป็นuserincludeItemsFromAllDrives: ระบุว่าจะรวมทั้งรายการในไดรฟ์ของฉันและไดรฟ์ที่แชร์ไว้ในผลการค้นหาหรือไม่ หากไม่มีหรือตั้งค่าเป็น "เท็จ" ระบบจะไม่แสดงผลรายการในไดรฟ์ที่แชร์supportsAllDrives: ระบุว่าแอปพลิเคชันที่ส่งคำขอรองรับทั้งไดรฟ์ของฉันและไดรฟ์ที่แชร์หรือไม่ หากเป็น "เท็จ" ระบบจะไม่รวมรายการในไดรฟ์ที่แชร์ไว้ในการตอบกลับ
โหมดการค้นหาต่อไปนี้เป็นโหมดเฉพาะสำหรับไดรฟ์ที่แชร์
includeItemsFromAllDrives |
corpora |
คำอธิบายการค้นหา |
|---|---|---|
true |
user |
ค้นหาไฟล์ที่ผู้ใช้เข้าถึง ซึ่งรวมถึงทั้งไฟล์ในไดรฟ์ที่แชร์และไดรฟ์ของฉัน |
true |
domain |
ค้นหาไฟล์ที่แชร์กับโดเมน ซึ่งรวมถึงทั้งไฟล์ในไดรฟ์ที่แชร์และไดรฟ์ของฉัน |
true |
drive |
ค้นหารายการทั้งหมดในไดรฟ์ที่แชร์ที่ระบุ ต้องระบุ driveId ในคำขอ |
true |
allDrives |
ค้นหาไฟล์ที่ผู้ใช้เข้าถึงและไดรฟ์ที่แชร์ทั้งหมดที่ผู้ใช้เป็นสมาชิก โปรดทราบว่าการตอบกลับอาจมี incompleteSearch:true ซึ่งบ่งบอกว่าระบบไม่ได้ค้นหาคลังข้อมูลบางรายการสำหรับคำขอนี้ |
ตัวอย่างโค้ดต่อไปนี้แสดงวิธีค้นหาไฟล์ในไดรฟ์ที่แชร์ทั้งหมด รวมถึงไดรฟ์ของฉัน
Python
files = []
page_token = None
while True:
response = drive_service.files().list(
q="mimeType='application/vnd.google-apps.folder'",
spaces='drive',
corpora='allDrives',
supportsAllDrives=True,
includeItemsFromAllDrives=True,
fields='nextPageToken, files(id, name)',
pageToken=page_token
).execute()
files.extend(response.get('files', []))
page_token = response.get('nextPageToken', None)
if not page_token:
break
Node.js
let files = [];
let pageToken = null;
do {
const response = await drive_service.files.list({
q: "mimeType='application/vnd.google-apps.folder'",
spaces: 'drive',
corpora: 'allDrives',
supportsAllDrives: true,
includeItemsFromAllDrives: true,
fields: 'nextPageToken, files(id, name)',
pageToken: pageToken
});
files = files.concat(response.data.files);
pageToken = response.data.nextPageToken;
} while (pageToken);
Java
List<File> files = new ArrayList<>();
String pageToken = null;
do {
FileList result = driveService.files().list()
.setQ("mimeType='application/vnd.google-apps.folder'")
.setSpaces("drive")
.setCorpora("allDrives")
.setSupportsAllDrives(true)
.setIncludeItemsFromAllDrives(true)
.setFields("nextPageToken, files(id, name)")
.setPageToken(pageToken)
.execute();
files.addAll(result.getFiles());
pageToken = result.getNextPageToken();
} while (pageToken != null);
curl
curl -X GET \
'https://www.googleapis.com/drive/v3/files?corpora=allDrives&includeItemsFromAllDrives=true&supportsAllDrives=true&fields=nextPageToken%2Cfiles(id%2Cname)' \
-H 'Authorization: Bearer ACCESS_TOKEN' \
-H 'Accept: application/json'
แทนที่ ACCESS_TOKEN ด้วยโทเค็น OAuth 2.0 ของแอป
ติดตามการเปลี่ยนแปลงในไดรฟ์ที่แชร์
ใช้เมธอด list ในแหล่งข้อมูล changes เพื่อติดตามการเปลี่ยนแปลงในไดรฟ์ที่แชร์ ดูข้อมูลเพิ่มเติมได้ที่
ติดตามการเปลี่ยนแปลงสำหรับผู้ใช้และไดรฟ์ที่แชร์
เมธอด list มีพารามิเตอร์การค้นหาเฉพาะไดรฟ์ที่แชร์ดังนี้
driveId: ไดรฟ์ที่แชร์ที่จะแสดงผลการเปลี่ยนแปลง หากระบุไว้ รหัสการเปลี่ยนแปลงจะอ้างอิงถึงการเปลี่ยนแปลงรายการภายในไดรฟ์ที่แชร์ ซึ่งแสดงสถานะปัจจุบันของไฟล์ หากต้องการอ้างอิงการเปลี่ยนแปลงไดรฟ์ที่แชร์ที่เฉพาะเจาะจง คุณต้องใช้ทั้งรหัสไดรฟ์ที่แชร์และรหัสการเปลี่ยนแปลงเป็นตัวระบุincludeItemsFromAllDrives: ระบุว่าจะรวมไฟล์หรือการเปลี่ยนแปลงในไดรฟ์ที่แชร์ไว้ในรายการการเปลี่ยนแปลงหรือไม่supportsAllDrives: ระบุว่าแอปพลิเคชันที่ส่งคำขอรองรับไดรฟ์ที่แชร์หรือไม่ หากเป็น "เท็จ" ระบบจะไม่แสดงผลรายการในไดรฟ์ที่แชร์ ซึ่งรวมถึงทั้งไดรฟ์ที่แชร์และไฟล์ภายในไดรฟ์ที่แชร์
โหมดการค้นหาต่อไปนี้เป็นโหมดเฉพาะสำหรับไดรฟ์ที่แชร์
includeItemsFromAllDrives |
driveId |
คำอธิบายการค้นหา |
|---|---|---|
true |
ไม่ | การเปลี่ยนแปลงจะแสดงการเปลี่ยนแปลงไฟล์ภายในหรือภายนอกไดรฟ์ที่แชร์ที่ผู้ใช้เข้าถึง รวมถึงการเปลี่ยนแปลงไดรฟ์ที่แชร์ที่ผู้ใช้เป็นสมาชิก |
true |
ใช่ | การเปลี่ยนแปลงจะแสดงการเปลี่ยนแปลงไดรฟ์ที่แชร์ที่เฉพาะเจาะจงที่ระบุและรายการภายในไดรฟ์ที่แชร์นั้น |
ตัวอย่างโค้ดต่อไปนี้แสดงวิธีติดตามการเปลี่ยนแปลงในไดรฟ์ที่แชร์
Python
# 1. Get the start page token for the shared drive.
response = drive_service.changes().getStartPageToken(
supportsAllDrives=True,
driveId='SHARED_DRIVE_ID'
).execute()
start_page_token = response.get('startPageToken')
# 2. List changes starting from the page token.
response = drive_service.changes().list(
pageToken=start_page_token,
supportsAllDrives=True,
includeItemsFromAllDrives=True,
driveId='SHARED_DRIVE_ID'
).execute()
changes = response.get('changes', [])
Node.js
// 1. Get the start page token for the shared drive.
const tokenResponse = await drive_service.changes.getStartPageToken({
supportsAllDrives: true,
driveId: 'SHARED_DRIVE_ID'
});
const startPageToken = tokenResponse.data.startPageToken;
// 2. List changes starting from the page token.
const response = await drive_service.changes.list({
pageToken: startPageToken,
supportsAllDrives: true,
includeItemsFromAllDrives: true,
driveId: 'SHARED_DRIVE_ID'
});
const changes = response.data.changes;
Java
// 1. Get the start page token for the shared drive.
StartPageToken tokenResult = driveService.changes().getStartPageToken()
.setSupportsAllDrives(true)
.setDriveId("SHARED_DRIVE_ID")
.execute();
String startPageToken = tokenResult.getStartPageToken();
// 2. List changes starting from the page token.
ChangeList changesResult = driveService.changes().list(startPageToken)
.setSupportsAllDrives(true)
.setIncludeItemsFromAllDrives(true)
.setDriveId("SHARED_DRIVE_ID")
.execute();
List<Change> changes = changesResult.getChanges();
curl
# 1. Get the start page token for the shared drive.
curl -X GET \
'https://www.googleapis.com/drive/v3/changes/startPageToken?supportsAllDrives=true&driveId=SHARED_DRIVE_ID' \
-H 'Authorization: Bearer ACCESS_TOKEN' \
-H 'Accept: application/json'
# 2. List changes starting from the page token.
curl -X GET \
'https://www.googleapis.com/drive/v3/changes?pageToken=START_PAGE_TOKEN&supportsAllDrives=true&includeItemsFromAllDrives=true&driveId=SHARED_DRIVE_ID' \
-H 'Authorization: Bearer ACCESS_TOKEN' \
-H 'Accept: application/json'
แทนที่ค่าต่อไปนี้
- SHARED_DRIVE_ID: รหัสของไดรฟ์ที่แชร์
- ACCESS_TOKEN: โทเค็น OAuth 2.0 ของแอป
- START_PAGE_TOKEN: โทเค็นหน้าเริ่มต้นสำหรับไดรฟ์ที่แชร์
แทนที่ SHARED_DRIVE_ID ด้วยรหัสของไดรฟ์ที่แชร์
เปิดใช้การรองรับไดรฟ์ที่แชร์ใน UI ของไดรฟ์
หากต้องการเข้าถึงเนื้อหาในไดรฟ์ที่แชร์โดยใช้ UI ของไดรฟ์ โปรดตรวจสอบว่าคุณได้เลือกช่องการรองรับไดรฟ์ที่แชร์ ในแท็บการผสานรวม UI ของไดรฟ์ ของ Google Drive API ในคอนโซล Google Cloud ดูข้อมูลเพิ่มเติมได้ที่ กำหนดค่าการผสานรวม UI ของไดรฟ์
ใช้ Google Picker กับไดรฟ์ที่แชร์
Google Picker รองรับการเลือกรายการในไดรฟ์ที่แชร์ ดูรายละเอียดเกี่ยวกับการเปิดใช้การรองรับไดรฟ์ที่แชร์และการเพิ่มมุมมองไดรฟ์ที่แชร์ ใน Picker ได้ที่ Google Picker API