1. ส่วนของ Google Apps Script (Code.gs)
ฟังก์ชัน doGet
- ฟังก์ชันนี้เป็นเอนด์พอยต์เริ่มต้นของเว็บแอพ
- หน้าที่:
- โหลดไฟล์ HTML (
Index.html
) และแสดงเป็นหน้าเว็บ - กำหนดชื่อของเว็บแอพในเบราว์เซอร์ว่า "ค้นหาไฟล์ใน Google Drive"
ฟังก์ชัน searchFiles
- ฟังก์ชันนี้ถูกเรียกจากหน้าเว็บ (HTML)
- หน้าที่:
- ค้นหาไฟล์ในโฟลเดอร์ตาม
Folder ID
ที่ได้รับ - ตรวจสอบว่าชื่อไฟล์มีข้อความที่ตรงกับ
คำค้นหา
- คืนค่าผลลัพธ์เป็นอาร์เรย์ของไฟล์ที่ตรง หรือข้อความแจ้งหากไม่มีไฟล์ที่ตรง
2. ส่วนของไฟล์ HTML (Index.html)
โครงสร้างของไฟล์
ไฟล์นี้แสดงอินเทอร์เฟซของเว็บแอพ พร้อมรองรับการค้นหาไดนามิก
ส่วนหัว (<head>
)
searchFiles
- อ่าน
Folder ID
และคำค้นหา
จากอินพุตในหน้าเว็บ - เรียกฟังก์ชัน
searchFiles
ใน Google Apps Script ผ่านgoogle.script.run
- กำหนดฟังก์ชัน
displayResults
เป็นตัวจัดการเมื่อได้รับผลลัพธ์สำเร็จ displayResults
- รับผลลัพธ์จาก Google Apps Script
- ล้างผลลัพธ์ก่อนหน้า
- แสดงรายการไฟล์ที่พบในรูปแบบลิงก์ หรือข้อความหากไม่พบไฟล์ที่ตรง
ส่วนเนื้อหา (<body>
)
- หน้าที่:
- อินพุตสำหรับ
Folder ID
และคำค้นหา
- ช่อง
คำค้นหา
มีoninput="searchFiles()"
ทำให้ค้นหาไฟล์แบบไดนามิกขณะพิมพ์ - แสดงผลลัพธ์ใน
<div id="results">
การทำงานทั้งหมด
- ผู้ใช้ป้อน
Folder ID
และคำค้นหา
ในหน้าเว็บ - ฟังก์ชัน
searchFiles
ถูกเรียกเมื่อมีการพิมพ์ในช่องคำค้นหา - ฟังก์ชัน
searchFiles
ใน Google Apps Script ค้นหาไฟล์ในโฟลเดอร์ที่ระบุ - ผลลัพธ์ที่พบจะถูกส่งกลับและแสดงใน
<div id="results">
- ผู้ใช้สามารถคลิกลิงก์ไฟล์เพื่อเปิดใน Google Drive ได้โดยตรง
code.gs
function doGet() {
return HtmlService.createHtmlOutputFromFile('index')
.setTitle('ค้นหาไฟล์ใน Google Drive');
}
// ฟังก์ชันค้นหาไฟล์ในโฟลเดอร์
function searchFiles(folderId, searchText) {
try {
const folder = DriveApp.getFolderById(folderId);
const files = folder.getFiles();
const results = [];
while (files.hasNext()) {
const file = files.next();
if (file.getName().toLowerCase().includes(searchText.toLowerCase())) {
results.push({
name: file.getName(),
url: file.getUrl(),
});
}
}
return { success: true, data: results };
} catch (error) {
return { success: false, message: 'เกิดข้อผิดพลาด: ' + error.message };
}
}
index.html
<!DOCTYPE html>
<html>
<head>
<title>ค้นหาไฟล์ใน Google Drive</title>
<script>
function searchFiles() {
const folderId = document.getElementById('folderId').value;
const searchText = document.getElementById('searchText').value;
if (!folderId) {
document.getElementById('results').textContent = 'กรุณากรอก Folder ID';
return;
}
google.script.run.withSuccessHandler(displayResults)
.searchFiles(folderId, searchText);
}
function displayResults(result) {
const resultDiv = document.getElementById('results');
resultDiv.innerHTML = '';
if (result.success && result.data.length > 0) {
result.data.forEach(file => {
const link = document.createElement('a');
link.href = file.url;
link.target = '_blank';
link.textContent = file.name;
resultDiv.appendChild(link);
resultDiv.appendChild(document.createElement('br'));
});
} else {
resultDiv.textContent = 'ไม่พบไฟล์ที่ตรงกับคำค้นหา';
}
}
</script>
</head>
<body>
<h1>ค้นหาไฟล์ใน Google Drive</h1>
<label for="folderId">Folder ID:</label>
<input type="text" id="folderId" placeholder="ใส่ Folder ID">
<br><br>
<label for="searchText">คำค้นหา:</label>
<input type="text" id="searchText" placeholder="ใส่คำค้นหา" oninput="searchFiles()">
<hr>
<div id="results"></div>
</body>
</html>