คู่มือใช้งาน API จัดการไฟล์ Google Drive

สำหรับครูผู้สอนกลุ่มสาระการเรียนรู้วิทยาศาสตร์และเทคโนโลยี

API URL: https://script.google.com/macros/s/AKfycbz3ENIijyea-6UgIWghQ62Sie2rsNsBLnpvGbh_NQnOuvV-Eot1ytR1Amcy-7CnM-2f/exec

ภาพรวม

API นี้ใช้สำหรับจัดการไฟล์บน Google Drive ผ่าน REST API โดยใช้ Google Apps Script เป็น Backend มีความสามารถในการจัดการไฟล์ขั้นพื้นฐานทั้งหมด

การยืนยันตัวตน (Token)

ทุกคำสั่งต้องส่ง token ไปด้วยทุกครั้ง มิฉะนั้น API จะคืน error 401 Unauthorized

วิธีตั้งค่า Token

เปิดไฟล์ google_apps_script.gs หาบรรทัดนี้แล้วใส่รหัส Token ที่ต้องการ:

const API_TOKEN = 'ใส่รหัสอะไรก็ได้ตรงนี้';

จากนั้น Deploy ใหม่ (Deploy > Manage deployments > Edit > Deploy)

วิธีส่ง Token ไปกับคำสั่ง

แบบ GET (ต่อท้าย URL):

?action=list&token=รหัสที่ตั้งไว้

แบบ POST (ใน JSON body):

{ "action": "createFolder", "name": "ใบงาน", "token": "รหัสที่ตั้งไว้" }

การใช้ PHP (GoogleDriveAPI.php):

$drive = new GoogleDriveAPI('https://script.google.com/macros/s/.../exec');
$drive->setToken('รหัสที่ตั้งไว้');
คำแนะนำ: ตั้ง Token ที่คาดเดายาก เช่น sk-xxxxxxxxxxxx หรือใช้รหัสแบบสุ่ม อย่าใช้ Token เดียวกับที่ใช้กับบริการอื่น

1. ดูรายการไฟล์และโฟลเดอร์

ใช้ดูไฟล์และโฟลเดอร์ทั้งหมดใน Drive หรือในโฟลเดอร์ที่กำหนด

ดูไฟล์ทั้งหมดใน root

GET ?action=list
https://script.google.com/macros/s/AKfycbz3ENIijyea-6UgIWghQ62Sie2rsNsBLnpvGbh_NQnOuvV-Eot1ytR1Amcy-7CnM-2f/exec?action=list

ดูไฟล์ในโฟลเดอร์ที่กำหนด

GET ?action=list&folderId=รหัสโฟลเดอร์
https://script.google.com/macros/s/.../exec?action=list&folderId=1rg8UyC4uZiO7mTU4YkSug9_tdk4FiSHy

ผลลัพธ์ที่ได้

{
  "folder": { "id": "1rg8UyC4uZiO7mTU4YkSug9_tdk4FiSHy", "name": "technology file" },
  "files": [
    { "id": "xxx", "name": "เอกสาร.pdf", "mimeType": "application/pdf", "size": 102400, "url": "https://..." }
  ],
  "folders": [
    { "id": "yyy", "name": "ใบงานที่ 1" }
  ]
}

3. สร้างโฟลเดอร์ใหม่

POST { "action": "createFolder", "name": "ชื่อโฟลเดอร์" }

ตัวอย่างเรียกด้วย curl:

curl -X POST "https://script.google.com/macros/s/.../exec" \
  -H "Content-Type: application/json" \
  -d '{"action":"createFolder","name":"ใบงานที่ 1"}'
พารามิเตอร์รายละเอียด
action"createFolder"
nameชื่อโฟลเดอร์ที่ต้องการสร้าง
parentId(ไม่บังคับ) ID โฟลเดอร์แม่ ถ้าไม่ส่งจะสร้างใน root

4. อัปโหลดไฟล์

POST { "action": "upload", "name": "file.pdf", "content": "base64...", "mimeType": "application/pdf" }
พารามิเตอร์รายละเอียด
action"upload"
nameชื่อไฟล์พร้อมนามสกุล (เช่น report.pdf, รูป.png)
contentเนื้อหาไฟล์ที่เข้ารหัส base64
mimeTypeประเภทไฟล์ (เช่น application/pdf, image/png, application/vnd.openxmlformats-officedocument.wordprocessingml.document)
parentId(ไม่บังคับ) ID โฟลเดอร์ปลายทาง

5. ลบไฟล์

POST { "action": "delete", "fileId": "รหัสไฟล์" }

ไฟล์จะถูกย้ายไปถังขยะ (สามารถกู้คืนได้จากถังขยะใน Google Drive)

curl -X POST "https://script.google.com/macros/s/.../exec" \
  -H "Content-Type: application/json" \
  -d '{"action":"delete","fileId":"1MGS7V7uoAl3kf1_5lULRyNAksxLN-9F8"}'

6. เปลี่ยนชื่อ

POST { "action": "rename", "fileId": "รหัสไฟล์", "newName": "ชื่อใหม่" }
curl -X POST "https://script.google.com/macros/s/.../exec" \
  -H "Content-Type: application/json" \
  -d '{"action":"rename","fileId":"xxx","newName":"เอกสารฉบับใหม่.pdf"}'

7. ย้ายไฟล์ไปโฟลเดอร์อื่น

POST { "action": "move", "fileId": "รหัสไฟล์", "targetFolderId": "รหัสโฟลเดอร์ปลายทาง" }

8. คัดลอกไฟล์

POST { "action": "copy", "fileId": "รหัสไฟล์", "newName": "ชื่อใหม่", "targetFolderId": "รหัสโฟลเดอร์" }

9. แชร์ไฟล์

POST { "action": "share", "fileId": "รหัสไฟล์", "email": "someone@email.com", "role": "reader" }
พารามิเตอร์รายละเอียด
fileIdรหัสไฟล์ที่ต้องการแชร์
emailอีเมลผู้รับ
role"reader" = ดูได้, "writer" = แก้ไขได้

10. ดูรายละเอียดไฟล์

GET ?action=info&fileId=รหัสไฟล์
?action=info&fileId=xxx

ส่งกลับข้อมูลชื่อไฟล์, ขนาด, ประเภท, URL, เจ้าของ, วันที่สร้าง-แก้ไข

11. ดูโครงสร้างโฟลเดอร์

GET ?action=tree
?action=tree

แสดงโครงสร้างแบบต้นไม้ (tree) ทั้งหมดของ Drive

ตัวอย่างการเรียก API ด้วย PHP

ดาวน์โหลดไฟล์ GoogleDriveAPI.php แล้วนำไปใช้ในโปรเจกต์:

<?php
require_once 'GoogleDriveAPI.php';

$drive = new GoogleDriveAPI('https://script.google.com/macros/s/AKfycbz3ENIijyea-6UgIWghQ62Sie2rsNsBLnpvGbh_NQnOuvV-Eot1ytR1Amcy-7CnM-2f/exec');

// ดูรายการไฟล์
$data = $drive->listFiles();

// ดูในโฟลเดอร์ที่กำหนด
$data = $drive->listFiles('FOLDER_ID');

// ค้นหา
$data = $drive->searchFiles('ใบงาน');

// สร้างโฟลเดอร์
$drive->createFolder('ชื่อโฟลเดอร์', 'PARENT_FOLDER_ID');

// อัปโหลด (จาก path ในเครื่อง)
$drive->uploadFromPath('การบ้าน.pdf');

// อัปโหลด (จากตัวแปร content)
$drive->uploadFile('file.pdf', $content, 'application/pdf');

// เปลี่ยนชื่อ
$drive->renameFile('FILE_ID', 'ชื่อใหม่.pdf');

// ย้าย
$drive->moveFile('FILE_ID', 'TARGET_FOLDER_ID');

// คัดลอก
$drive->copyFile('FILE_ID', 'สำเนา', 'FOLDER_ID');

// แชร์
$drive->shareFile('FILE_ID', 'teacher@school.ac.th', 'reader');

// ลบ
$drive->deleteFile('FILE_ID');

// ดูรายละเอียดไฟล์
$info = $drive->getFileInfo('FILE_ID');

// ดูโครงสร้าง
$tree = $drive->getFolderTree();
?>

ตัวอย่างการเรียก API ด้วย JavaScript

const API = 'https://script.google.com/macros/s/AKfycbz3ENIijyea-6UgIWghQ62Sie2rsNsBLnpvGbh_NQnOuvV-Eot1ytR1Amcy-7CnM-2f/exec';

// ดูรายการไฟล์
fetch(API + '?action=list')
  .then(r => r.json())
  .then(console.log);

// สร้างโฟลเดอร์
fetch(API, {
  method: 'POST',
  body: JSON.stringify({ action: 'createFolder', name: 'ใบงานที่ 1' })
}).then(r => r.json()).then(console.log);

// อัปโหลดไฟล์
async function upload(file) {
  const b64 = btoa(String.fromCharCode(...new Uint8Array(await file.arrayBuffer())));
  return fetch(API, {
    method: 'POST',
    body: JSON.stringify({ action: 'upload', name: file.name, content: b64, mimeType: file.type })
  }).then(r => r.json());
}

// ลบไฟล์
fetch(API, {
  method: 'POST',
  body: JSON.stringify({ action: 'delete', fileId: 'FILE_ID' })
});

ตัวอย่างการเรียก API ด้วย Python

import requests, base64, json

API = 'https://script.google.com/macros/s/AKfycbz3ENIijyea-6UgIWghQ62Sie2rsNsBLnpvGbh_NQnOuvV-Eot1ytR1Amcy-7CnM-2f/exec'

# ดูรายการ
r = requests.get(API, params={'action': 'list'})
print(r.json())

# สร้างโฟลเดอร์
r = requests.post(API, json={'action': 'createFolder', 'name': 'ใบงาน'})

# อัปโหลด
with open('doc.pdf', 'rb') as f:
    content = base64.b64encode(f.read()).decode()
r = requests.post(API, json={
    'action': 'upload', 'name': 'doc.pdf',
    'content': content, 'mimeType': 'application/pdf'
})

# ลบ
r = requests.post(API, json={'action': 'delete', 'fileId': 'FILE_ID'})

ตัวอย่างการประยุกต์ใช้

ระบบส่งการบ้าน — นักเรียนอัปโหลดไฟล์ผ่านเว็บ
<form method="POST" enctype="multipart/form-data">
  ชื่อ: <input name="name">
  ไฟล์: <input type="file" name="file">
  <button>ส่งการบ้าน</button>
</form>

<?php
require_once 'GoogleDriveAPI.php';
$drive = new GoogleDriveAPI('https://script.google.com/macros/s/.../exec');

if ($_POST) {
    $folder = $drive->createFolder($_POST['name']);
    $drive->uploadFromPath($_FILES['file']['tmp_name'], $folder['id']);
    echo "ส่งการบ้านสำเร็จ!";
}
?>
วิธีหา File ID และ Folder ID

วิธีที่ 1: เรียก ?action=list เพื่อดู ID ทั้งหมด

วิธีที่ 2: เปิดไฟล์ใน Google Drive คัดลอกจาก URL: https://drive.google.com/file/d/FILE_ID/view

วิธีที่ 3: สำหรับ Folder ID: https://drive.google.com/drive/folders/FOLDER_ID

หมายเหตุ: API นี้ถูก Deploy ด้วยบัญชี phuthanet.th@siya.ac.th หากต้องการเปลี่ยนเจ้าของบัญชี หรือต้องการ Deploy ใหม่ด้วยบัญชีของคุณ ให้ใช้ไฟล์ google_apps_script.gs ที่ให้มาไปสร้าง Web App ใหม่ (เปลี่ยน ROOT_FOLDER_ID ให้ตรงกับโฟลเดอร์ของคุณ)