สำหรับครูผู้สอนกลุ่มสาระการเรียนรู้วิทยาศาสตร์และเทคโนโลยี
API นี้ใช้สำหรับจัดการไฟล์บน Google Drive ผ่าน REST API โดยใช้ Google Apps Script เป็น Backend มีความสามารถในการจัดการไฟล์ขั้นพื้นฐานทั้งหมด
https://script.google.com/macros/s/AKfycbz3ENIijyea-6UgIWghQ62Sie2rsNsBLnpvGbh_NQnOuvV-Eot1ytR1Amcy-7CnM-2f/exec1rg8UyC4uZiO7mTU4YkSug9_tdk4FiSHy (โฟลเดอร์ "technology file")ทุกคำสั่งต้องส่ง token ไปด้วยทุกครั้ง มิฉะนั้น API จะคืน error 401 Unauthorized
เปิดไฟล์ google_apps_script.gs หาบรรทัดนี้แล้วใส่รหัส Token ที่ต้องการ:
const API_TOKEN = 'ใส่รหัสอะไรก็ได้ตรงนี้';
จากนั้น Deploy ใหม่ (Deploy > Manage deployments > Edit > Deploy)
แบบ 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('รหัสที่ตั้งไว้');
sk-xxxxxxxxxxxx หรือใช้รหัสแบบสุ่ม อย่าใช้ Token เดียวกับที่ใช้กับบริการอื่น
ใช้ดูไฟล์และโฟลเดอร์ทั้งหมดใน Drive หรือในโฟลเดอร์ที่กำหนด
https://script.google.com/macros/s/AKfycbz3ENIijyea-6UgIWghQ62Sie2rsNsBLnpvGbh_NQnOuvV-Eot1ytR1Amcy-7CnM-2f/exec?action=list
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" }
]
}
?action=search&search=ใบงาน
ค้นหาจากชื่อไฟล์ ส่งกลับเป็น array ของไฟล์ที่ตรงกับคำค้น
ตัวอย่างเรียกด้วย 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 |
| พารามิเตอร์ | รายละเอียด |
|---|---|
| action | "upload" |
| name | ชื่อไฟล์พร้อมนามสกุล (เช่น report.pdf, รูป.png) |
| content | เนื้อหาไฟล์ที่เข้ารหัส base64 |
| mimeType | ประเภทไฟล์ (เช่น application/pdf, image/png, application/vnd.openxmlformats-officedocument.wordprocessingml.document) |
| parentId | (ไม่บังคับ) ID โฟลเดอร์ปลายทาง |
ไฟล์จะถูกย้ายไปถังขยะ (สามารถกู้คืนได้จากถังขยะใน Google Drive)
curl -X POST "https://script.google.com/macros/s/.../exec" \
-H "Content-Type: application/json" \
-d '{"action":"delete","fileId":"1MGS7V7uoAl3kf1_5lULRyNAksxLN-9F8"}'
curl -X POST "https://script.google.com/macros/s/.../exec" \
-H "Content-Type: application/json" \
-d '{"action":"rename","fileId":"xxx","newName":"เอกสารฉบับใหม่.pdf"}'
?action=info&fileId=xxx
ส่งกลับข้อมูลชื่อไฟล์, ขนาด, ประเภท, URL, เจ้าของ, วันที่สร้าง-แก้ไข
?action=tree
แสดงโครงสร้างแบบต้นไม้ (tree) ทั้งหมดของ Drive
ดาวน์โหลดไฟล์ 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();
?>
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' })
});
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 "ส่งการบ้านสำเร็จ!";
}
?>
วิธีที่ 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
phuthanet.th@siya.ac.th หากต้องการเปลี่ยนเจ้าของบัญชี หรือต้องการ Deploy ใหม่ด้วยบัญชีของคุณ ให้ใช้ไฟล์ google_apps_script.gs ที่ให้มาไปสร้าง Web App ใหม่ (เปลี่ยน ROOT_FOLDER_ID ให้ตรงกับโฟลเดอร์ของคุณ)