เป็นสคริปต์สำหรับ Google Apps Script ที่ใช้ในการค้นหาไฟล์ใน Google Drive จากชื่อโฟลเดอร์และชื่อไฟล์ที่ระบุใน Google Sheets แล้วบันทึก URL ของไฟล์นั้นลงในคอลัมน์ C ของแถวเดียวกัน โค้ดนี้ทำงานภายใต้การทำงานของฟังก์ชัน doPost, ซึ่งถูกเรียกเมื่อมีการส่งข้อมูลมายัง Apps Script ผ่าน HTTP POST request. นี่คือรายละเอียดของแต่ละส่วนของโค้ด:
function doPost(e) {
var postdata = JSON.parse(e.postData.contents);
var row = postdata.row;
var sheet = SpreadsheetApp.getActive().getSheetByName("ชื่อชีต");
var arrpath = sheet.getRange('คอลัมภ์ชื่อไฟล์'+row).getDisplayValue().split("/");
var foldername = arrpath[0];
var filename = arrpath[1];
var fileid = DriveApp.getFoldersByName(foldername).next().getFilesByName(filename).next().getId();
var fileurl = "https://drive.google.com/uc?export=view&id=" + fileid;
sheet.getRange('คอลัมภ์ลิงค์'+row).setValue(fileurl);
}
คำอธิบาย
- var postdata = JSON.parse(e.postData.contents);- แปลงข้อมูลที่ได้รับจาก request เป็น JSON object.
- var row = postdata.row;- อ่านค่าของแถวที่ต้องการอัพเดทจากข้อมูลที่ได้รับ.
- var sheet = SpreadsheetApp.getActive().getSheetByName("ชีต1");- เข้าถึงแผ่นงานที่ชื่อว่า "ชีต1" ภายในสเปรดชีตที่ script กำลังทำงานอยู่.
- var arrpath = sheet.getRange('B'+row).getDisplayValue().split("/");- อ่านค่าจากคอลัมน์ B ของแถวที่ระบุและแยกสตริงด้วยเครื่องหมาย "/" เพื่อแยกชื่อโฟลเดอร์และชื่อไฟล์.
- var foldername = arrpath[0];- กำหนดชื่อโฟลเดอร์จากส่วนแรกของ array.
- var filename = arrpath[1];- กำหนดชื่อไฟล์จากส่วนที่สองของ array.
- var fileid = DriveApp.getFoldersByName(foldername).next().getFilesByName(filename).next().getId();- ค้นหาไฟล์ด้วยชื่อโฟลเดอร์และชื่อไฟล์ที่ระบุ, และเก็บ ID ของไฟล์นั้น.
- var fileurl = "https://drive.google.com/uc?export=view&id=" + fileid;- สร้าง URL สำหรับการเข้าถึงไฟล์โดยตรงจาก Google Drive โดยใช้ ID ของไฟล์.
