คู่มือนี้อธิบายวิธีสร้างและจัดการไฟล์ใน Google ไดรฟ์โดยใช้ Google Drive API
สร้างไฟล์
หากต้องการสร้างไฟล์ในไดรฟ์ที่มีเนื้อหา (สื่อ) คุณต้องอัปโหลดข้อมูลไฟล์ โดยสามารถอัปโหลดข้อมูลเมตาและเนื้อหาของไฟล์พร้อมกันในคำขอเดียว (การอัปโหลดแบบหลายส่วน) หรืออัปโหลดเฉพาะสื่อ (การอัปโหลดแบบง่าย) ดูข้อมูลเพิ่มเติมได้ที่ อัปโหลดข้อมูลไฟล์
หากต้องการสร้างไฟล์ที่ไม่มีข้อมูลเมตาหรือเนื้อหา ให้ใช้เมธอด create ในทรัพยากร files โดยไม่มีพารามิเตอร์
เมื่อสร้างไฟล์ เมธอดจะแสดงผลทรัพยากร files โดยไฟล์จะมี kind เป็น drive.file, id, name เป็น "ไม่มีชื่อ" และ mimeType เป็น application/octet-stream ระบบจะทำเครื่องหมาย
uploadType
ว่าจำเป็น แต่จะตั้งค่าเริ่มต้นเป็น media ดังนั้นคุณจึงไม่จำเป็นต้อง
ระบุค่านี้
ดูข้อมูลเพิ่มเติมเกี่ยวกับขีดจำกัดของไฟล์ในไดรฟ์ได้ที่ขีดจำกัดของไฟล์และ โฟลเดอร์
ตัวอย่างโค้ดต่อไปนี้แสดงวิธีสร้างไฟล์ที่ไม่มีข้อมูลเมตาหรือเนื้อหา
Node.js
/**
* Create an empty file.
* @return {string} The created file's ID.
*/
async function createEmptyFile() {
// Get credentials and build service
// TODO(developer): Use appropriate auth mechanism for your app
const {GoogleAuth} = require('google-auth-library');
const {google} = require('googleapis');
const auth = new GoogleAuth({scopes: 'https://www.googleapis.com/auth/drive'});
const service = google.drive({version: 'v3', auth});
try {
const response = await service.files.create({});
console.log('File ID: ' + response.data.id);
return response.data.id;
} catch (err) {
// TODO(developer): Handle error
console.error(err);
}
}
curl
curl -X POST 'https://www.googleapis.com/drive/v3/files' \
-H 'Authorization: Bearer ACCESS_TOKEN'
แทนที่ค่าต่อไปนี้
- ACCESS_TOKEN: โทเค็น OAuth 2.0 ของแอป
ใช้พารามิเตอร์ของฟิลด์ต่างๆ
หากต้องการระบุฟิลด์ที่จะแสดงผลในการตอบกลับ คุณสามารถตั้งค่า
fields พารามิเตอร์
ระบบ
ด้วยเมธอดใดก็ได้ของทรัพยากร files หากไม่ระบุพารามิเตอร์ fields เซิร์ฟเวอร์จะแสดงผลชุดฟิลด์เริ่มต้นที่เฉพาะเจาะจงกับเมธอด เช่น เมธอด
list จะแสดงผลเฉพาะฟิลด์ kind, id,
name, mimeType, และ resourceKey สำหรับแต่ละไฟล์ หากต้องการแสดงผลฟิลด์อื่น
โปรดดูหัวข้อแสดงผลฟิลด์ที่เฉพาะเจาะจง
การเป็นเจ้าของไฟล์
เมื่อสร้างไฟล์โดยใช้ Drive API การเป็นเจ้าของจะขึ้นอยู่กับข้อมูลเข้าสู่ระบบการตรวจสอบสิทธิ์ที่แอปใช้ในลักษณะต่อไปนี้
บัญชีผู้ใช้ (OAuth 2.0): หากแอปพลิเคชันตรวจสอบสิทธิ์ในนามของผู้ใช้ ผู้ใช้รายนั้นจะเป็นเจ้าของไฟล์ จากนั้นไฟล์จะอยู่ในโฟลเดอร์ไดรฟ์ ของฉันหรือโฟลเดอร์ ที่ระบุ และใช้โควต้าพื้นที่เก็บข้อมูลของผู้ใช้
บัญชีบริการ: หากแอปพลิเคชันตรวจสอบสิทธิ์โดยใช้บัญชี บริการ บัญชีบริการจะเป็นเจ้าของไฟล์ จากนั้นไฟล์จะอยู่ในพื้นที่เก็บข้อมูล Google ไดรฟ์เฉพาะของบัญชีบริการ ไฟล์จะไม่ปรากฏในบัญชีพื้นที่เก็บข้อมูล Google ไดรฟ์อื่นๆ เว้นแต่จะมีการแชร์อย่างชัดเจน หากลบบัญชีบริการ ระบบจะลบไฟล์ทั้งหมดที่เป็นเจ้าของโดยบัญชีบริการนั้นออกทันที
หากคุณใช้บัญชีบริการแต่ต้องการให้บัญชีผู้ใช้ที่เฉพาะเจาะจงเป็นเจ้าของไฟล์ ให้ใช้การมอบสิทธิ์ทั่วทั้งโดเมน ซึ่งจะช่วยให้บัญชีบริการสามารถแอบอ้างเป็นผู้ใช้และสร้างไฟล์ในนามของผู้ใช้ได้ ดูข้อมูลเพิ่มเติมได้ที่ มอบสิทธิ์ทั่วทั้งโดเมนให้กับบัญชีบริการ
ดูข้อมูลเพิ่มเติมเกี่ยวกับสิทธิ์ของไฟล์ได้ที่แชร์ไฟล์ โฟลเดอร์ และ ไดรฟ์
สร้างรหัสที่จะใช้กับไฟล์
เมธอด generateIds ในทรัพยากร
files ช่วยให้คุณสร้างรหัสไฟล์
ที่ไม่ซ้ำกันล่วงหน้า ซึ่งสามารถใช้เมื่อสร้างหรือคัดลอกไฟล์และโฟลเดอร์ใน
ไดรฟ์ ซึ่งจะเป็นประโยชน์เมื่อคุณต้องการควบคุมรหัสไฟล์จากแอป แทนที่จะให้ไดรฟ์กำหนดรหัสโดยอัตโนมัติ
คุณสามารถตั้งค่าจำนวนรหัสที่จะสร้างได้โดยใช้
count
พารามิเตอร์การค้นหา หากไม่ได้ตั้งค่า count ระบบจะแสดงผล 10 รายการโดยค่าเริ่มต้น จำนวนรหัสสูงสุดที่คุณขอได้คือ 1,000 รายการ
นอกจากนี้ คุณยังระบุ
space ที่
สามารถใช้รหัสและ
type ของ
รายการที่สามารถใช้รหัสได้ด้วย
เมื่อสร้างรหัสแล้ว คุณจะส่งรหัสไปยังเมธอด create หรือ copy ผ่านฟิลด์ id ได้ ซึ่งจะช่วยให้ไฟล์ที่สร้างหรือคัดลอกใช้รหัสที่กำหนดไว้ล่วงหน้า
หากสร้างหรือคัดลอกไฟล์สำเร็จ การลองใหม่ในภายหลังจะแสดงการตอบกลับรหัสสถานะ HTTP 409
Conflict และระบบจะไม่สร้างไฟล์ที่ซ้ำกัน
โปรดทราบว่าระบบไม่รองรับรหัสที่สร้างไว้ล่วงหน้าสำหรับการสร้างไฟล์
Google Workspace ยกเว้นapplication/vnd.google-apps.drive-sdk
และ application/vnd.google-apps.folder ประเภท
MIME ในทำนองเดียวกัน ระบบก็ไม่รองรับการอัปโหลดที่อ้างอิงการแปลงเป็นรูปแบบไฟล์ Google Workspace
ตัวอย่างโค้ดต่อไปนี้แสดงวิธีสร้างรหัสไฟล์ที่ไม่ซ้ำกันล่วงหน้า
Node.js
/**
* Pre-generate unique file IDs.
*/
async function generateFileIds() {
// Get credentials and build service
// TODO(developer): Use appropriate auth mechanism for your app
const {GoogleAuth} = require('google-auth-library');
const {google} = require('googleapis');
const auth = new GoogleAuth({scopes: 'https://www.googleapis.com/auth/drive'});
const service = google.drive({version: 'v3', auth});
try {
const response = await service.files.generateIds({
count: 10,
space: 'drive'
});
const ids = response.data.ids;
console.log('Generated IDs:');
for (const id of ids) {
console.log(id);
}
} catch (err) {
// TODO(developer): Handle error
console.error(err);
}
}
curl
curl 'https://www.googleapis.com/drive/v3/files/generateIds?count=10&space=drive' \
-H 'Authorization: Bearer ACCESS_TOKEN'
แทนที่ค่าต่อไปนี้
- ACCESS_TOKEN: โทเค็น OAuth 2.0 ของแอป
สร้างไฟล์ที่มีเฉพาะข้อมูลเมตา
ไฟล์ที่มีเฉพาะข้อมูลเมตาจะไม่มีเนื้อหา ข้อมูลเมตาคือข้อมูล (เช่น name, mimeType และ createdTime) ที่อธิบายไฟล์ ฟิลด์อย่าง name จะไม่ขึ้นอยู่กับผู้ใช้และปรากฏเหมือนกันสำหรับผู้ใช้แต่ละราย ในขณะที่ฟิลด์ เช่น viewedByMeTime จะมีค่าที่เฉพาะเจาะจงกับผู้ใช้
ตัวอย่างหนึ่งของไฟล์ที่มีเฉพาะข้อมูลเมตาคือโฟลเดอร์ที่มีประเภท MIME application/vnd.google-apps.folder ดูข้อมูลเพิ่มเติมได้ที่สร้างและ
ป้อนข้อมูลในโฟลเดอร์ อีกตัวอย่างหนึ่งคือทางลัดที่ชี้ไปยังไฟล์อื่นในไดรฟ์ที่มีประเภท MIME application/vnd.google-apps.shortcut ดูข้อมูลเพิ่มเติมได้ที่สร้าง
ทางลัดไปยังไฟล์ในไดรฟ์
จัดการรูปภาพภาพปก
ภาพปกช่วยให้ผู้ใช้ระบุไฟล์ในไดรฟ์ได้ ไดรฟ์ สามารถสร้างภาพปกสำหรับไฟล์ประเภททั่วไปโดยอัตโนมัติ หรือคุณจะระบุ รูปภาพภาพปกที่แอปสร้างขึ้นก็ได้ ดูข้อมูลเพิ่มเติมได้ที่อัปโหลด ภาพปก
คัดลอกไฟล์ที่มีอยู่
หากต้องการคัดลอกไฟล์และใช้การอัปเดตที่ขอ ให้ใช้ copy ในทรัพยากร files หากต้องการค้นหา
fileId ที่จะคัดลอก ให้ใช้เมธอด list
คุณสามารถใช้การอัปเดตผ่านความหมายของแพตช์ ซึ่งหมายความว่าคุณสามารถทำการแก้ไขทรัพยากรบางส่วนได้ คุณต้องตั้งค่าฟิลด์ที่ต้องการแก้ไขในคำขออย่างชัดเจน ฟิลด์ที่ไม่ได้รวมอยู่ในคำขอจะยังคงค่าเดิม ดูข้อมูลเพิ่มเติมได้ที่การทำงานกับทรัศยากรบางส่วน
คุณสามารถตั้งค่ารหัสไฟล์ของไฟล์ที่คัดลอกไว้ล่วงหน้าได้โดยใช้เมธอด generateIds ดูข้อมูลเพิ่มเติมได้ที่
สร้างรหัสที่จะใช้กับไฟล์
โปรดทราบว่าคุณต้องใช้ขอบเขต Drive API ที่เหมาะสมเพื่อให้สิทธิ์การเรียก ดูข้อมูลเพิ่มเติมเกี่ยวกับขอบเขตของไดรฟ์ได้ที่ เลือก ขอบเขต Google Drive API
ตัวอย่างโค้ดต่อไปนี้แสดงวิธีคัดลอกไฟล์และอัปเดตชื่อไฟล์
Node.js
/**
* Copy an existing file.
* @return {string} The copied file's ID.
*/
async function copyFile() {
// Get credentials and build service
// TODO(developer): Use appropriate auth mechanism for your app
const {GoogleAuth} = require('google-auth-library');
const {google} = require('googleapis');
const auth = new GoogleAuth({scopes: 'https://www.googleapis.com/auth/drive'});
const service = google.drive({version: 'v3', auth});
try {
const response = await service.files.copy({
fileId: 'FILE_ID',
requestBody: {
name: 'FILE_COPY_NAME'
}
});
console.log('Copied file ID: ' + response.data.id);
return response.data.id;
} catch (err) {
// TODO(developer): Handle error
console.error(err);
}
}
แทนที่ค่าต่อไปนี้
- FILE_ID: รหัสของไฟล์ที่จะคัดลอก
- FILE_COPY_NAME: ชื่อของไฟล์ใหม่
curl
curl -X POST 'https://www.googleapis.com/drive/v3/files/FILE_ID/copy' \
-H 'Authorization: Bearer ACCESS_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"name": "FILE_COPY_NAME"
}'
แทนที่ค่าต่อไปนี้
- FILE_ID: รหัสของไฟล์ที่จะคัดลอก
- ACCESS_TOKEN: โทเค็น OAuth 2.0 ของแอป
- FILE_COPY_NAME: ชื่อของไฟล์ใหม่
คัดลอกความคิดเห็น
หากต้องการคัดลอกความคิดเห็นและคำแนะนำเมื่อคัดลอกไฟล์ Google เอกสาร
ชีต หรือสไลด์ ให้ตั้งค่าพารามิเตอร์การค้นหา copyComments เป็น true ไดรฟ์จะคัดลอกเฉพาะความคิดเห็นที่เปิดอยู่ (ความคิดเห็นที่ยังไม่ได้รับการแก้ไข) สำหรับไฟล์ประเภทอื่นๆ ไดรฟ์จะละเว้นพารามิเตอร์นี้
ดูข้อมูลเพิ่มเติมเกี่ยวกับสิทธิ์ การระบุแหล่งที่มาของความคิดเห็น และข้อควรพิจารณาเกี่ยวกับการเข้าถึง ได้ที่ ข้อจำกัดและข้อควรพิจารณา
ข้อจำกัดและข้อควรพิจารณา
โปรดทราบข้อจำกัดและข้อควรพิจารณาต่อไปนี้ขณะเตรียมคัดลอกไฟล์
สิทธิ์:
- ออบเจ็กต์
DownloadRestrictionsMetadataของทรัพยากรfilesจะกำหนด ผู้ที่สามารถคัดลอกไฟล์ได้ ดูข้อมูลเพิ่มเติมได้ที่ ป้องกันไม่ให้ผู้ใช้ ดาวน์โหลด พิมพ์ หรือคัดลอก ไฟล์ - ทรัพยากรฟิลด์
capabilities.canCopyจะกำหนดว่าผู้ใช้คัดลอกไฟล์ได้หรือไม่ ดูข้อมูล เพิ่มเติมได้ที่ทำความเข้าใจความสามารถของไฟล์ - หากต้องการคัดลอกความคิดเห็น คุณต้องมีสิทธิ์อ่านความคิดเห็นในไฟล์ต้นฉบับ หากไม่มีสิทธิ์อ่านความคิดเห็นและตั้งค่า
copyCommentsเป็นtrueการดำเนินการคัดลอกจะยังคงสำเร็จ แต่ระบบจะไม่คัดลอกความคิดเห็น - การคัดลอกความคิดเห็นไม่ได้ให้สิทธิ์เข้าถึงไฟล์ใหม่แก่ผู้เขียนความคิดเห็นเดิม รายการควบคุมการเข้าถึง (ACL) ของไฟล์ใหม่จะไม่ขึ้นอยู่กับ ACL ของไฟล์ต้นฉบับ
- ผู้ใช้ที่สร้างสำเนาจะเป็นเจ้าของไฟล์ที่คัดลอก ระบบจะไม่จำลองการตั้งค่าการแชร์อื่นๆ จากไฟล์ต้นฉบับ หากสร้างสำเนาในโฟลเดอร์ที่แชร์ สำเนาจะรับค่าสิทธิ์ของโฟลเดอร์นั้น
- การเป็นเจ้าของไฟล์ที่คัดลอกอาจเปลี่ยนแปลงและสำเนาอาจไม่รับค่าการตั้งค่าการแชร์ของไฟล์ต้นฉบับ คุณอาจต้องรีเซ็ตการตั้งค่าเหล่านี้
- ออบเจ็กต์
การจัดการไฟล์:
- ไฟล์บางไฟล์ เช่น ทางลัด ของบุคคลที่สาม จะคัดลอกไม่ได้
- คุณคัดลอกไฟล์ไปยังโฟลเดอร์หลักได้เพียงโฟลเดอร์เดียว ระบบไม่รองรับการระบุโฟลเดอร์หลักหลายรายการ หากไม่ได้ระบุฟิลด์
parentsไฟล์จะรับค่าโฟลเดอร์หลักที่ค้นพบได้จากไฟล์ต้นฉบับ - แม้ว่าโฟลเดอร์จะเป็นไฟล์ประเภทหนึ่ง แต่คุณก็คัดลอกโฟลเดอร์ไม่ได้
ให้สร้างโฟลเดอร์ปลายทางและตั้งค่าฟิลด์
parentsของไฟล์ที่มีอยู่เป็นโฟลเดอร์ปลายทางแทน จากนั้นคุณจะลบโฟลเดอร์ต้นฉบับได้ - เมธอด
copyจะสร้างไฟล์ที่มีชื่อเดียวกับไฟล์ต้นฉบับ เว้นแต่จะมีการระบุชื่อไฟล์ใหม่ - การใช้
copyมากเกินไปอาจทำให้คุณใช้เกินขีดจำกัดโควต้า Drive API ดูข้อมูลเพิ่มเติมได้ที่ ขีดจำกัด การใช้งาน
หัวข้อที่เกี่ยวข้อง
ต่อไปนี้คือขั้นตอนถัดไปที่คุณอาจลองทำ
หากต้องการอัปโหลดข้อมูลไฟล์เมื่อสร้างหรืออัปเดตไฟล์ โปรดดูหัวข้ออัปโหลดไฟล์ ข้อมูล
หากต้องการสร้างไฟล์ในโฟลเดอร์ที่เฉพาะเจาะจง โปรดดูหัวข้อสร้างไฟล์ในโฟลเดอร์ที่เฉพาะเจาะจง
หากต้องการย้ายไฟล์ โปรดดูหัวข้อย้ายไฟล์ระหว่าง โฟลเดอร์
หากต้องการทำงานกับข้อมูลเมตาของไฟล์ โปรดดูหัวข้อจัดการข้อมูลเมตาของไฟล์
หากต้องการลบไฟล์ โปรดดูหัวข้อ นำไฟล์และโฟลเดอร์ไปไว้ในถังขยะหรือลบไฟล์และ โฟลเดอร์