กลับไปคลังความรู้

บทความ

Google sheet สำหรับอัพโหลดเก็บเอกสาร แนบไฟล์ได้

น่าจะเป็นคำถามที่ค้างคาใจกับหลายๆคนมานาน เพราะเปิดดูเครื่องมือ จะอัพโหลดไฟล์ ก็ไม่มีเครื่องมือที่สามารถอัพไฟล์ได้โดยตรง นอกจากว่า เราจะเอาไฟล์ ไปอัพไว้ที่ Google drive แล้วก็คัดลอกลิงค์ มาแปะไว้ใน Google sheet อีกที มันเลยทำการ การใช้งาน อาจจะไม่สะดวกมากนัก

7 ตุลาคม 2567 อ่าน 15 นาที
Google sheet สำหรับอัพโหลดเก็บเอกสาร แนบไฟล์ได้

Google sheet สามารถอัพโหลดไฟล์และสร้างลิงค์แนบได้ไหม

น่าจะเป็นคำถามที่ค้างคาใจกับหลายๆคนมานาน เพราะเปิดดูเครื่องมือ จะอัพโหลดไฟล์ ก็ไม่มีเครื่องมือที่สามารถอัพไฟล์ได้โดยตรง นอกจากว่า เราจะเอาไฟล์ ไปอัพไว้ที่ Google drive แล้วก็คัดลอกลิงค์ มาแปะไว้ใน Google sheet อีกที มันเลยทำการ การใช้งาน อาจจะไม่สะดวกมากนัก

แต่ถึงแม้ว่า Google sheet จะยังไม่ได้มีเครื่องมือ สำหรับการอัพไฟล์ เพื่อแนบลิงค์มาให้โดยตรง แต่เราก็สามารถ ที่จะสร้างตัวช่วยให้สามารถ กดอัพไฟล์บนหน้า Google sheet โดยตรงได้เลย โดยการใช้ Apps Script ที่ทาง Google sheet เขามีมาให้นั่นเอง จะมีวิธีการทำอย่างไรบ้าง มาดูกัน

ขั้นตอนการทำ

สร้างฟอร์มตาราง สำหรับการบันทึกข้อมูลบน Google sheet ตามตัวอย่าง

ตารางจะประกอบไปด้วย หัวข้อ

  • เลขที่เอกสาร
  • ประเภทเอกสาร ให้ทำเป็น Dropdown เพื่อให้สามารถเลือกได้ โดยไปที่เมนู ข้อมูล > การตรวจสอบข้อมูล >และใส่ประเภทของเอกสารเข้าไป
  • คำอธิบาย ไว้สำหรับอธิบายเอกสารเพิ่มเติม
  • แนบลิงค์เอกสาร ไว้สำหรับแนบลิงค์ไฟล์ ที่ได้จากการอัพโหลดแล้ว
  • แถว C3 ไว้สำหรับ รับลิงค์ ที่ได้จากการอัพโหลด ซึ่งจะขึ้นมาให้อัตโนมัติ
  • ปุ่ม อัพโหลดไฟล์ ทำได้โดย เลือกที่เมนู แทรก > ภาพวาด
ตัวอย่างตารางฟอร์มสำหรับบันทึกข้อมูลบน Google sheet

2. ไปที่ Google Drive แล้วสร้าง โฟลเดอร์ใหม่ขึ้นมา เพื่อใช้เก็บไฟล์ที่จะอัพโหลด โดยให้ตั้งชื่อว่า ไฟล์เอกสาร-Googlesheet

3. เมนู ส่วนขยาย > Apps Script หลังจากที่เข้ามาในหน้า Apps Script ที่แถบด้านข้าง เขียนว่า รหัส JS ให้เรากดเลือก แล้วลบโค๊ดทั้งหมดของหน้านี้ออก แล้ว คัดลอกโค๊ดจากด้านล่างนี้ไปใส่แทน

หน้า Apps Script สำหรับใส่โค๊ด JS

function openUploadForm() {
  var htmlOutput = HtmlService.createHtmlOutputFromFile('uploadForm.html')
    .setWidth(200)
    .setHeight(50);
  SpreadsheetApp.getUi().showModalDialog(htmlOutput, 'Upload PDF');
}

function uploadFileToDrive(base64Data, fileName) {
  var decodedData = Utilities.base64Decode(base64Data);
  var folderName = "ไฟล์เอกสาร-Googlesheet"; // ชื่อโฟลเดอร์ที่ต้องการใช้งาน
  var folder = DriveApp.getFoldersByName(folderName);
  var targetFolder;
  if (folder.hasNext()) {
    targetFolder = folder.next();
  } else {
    targetFolder = DriveApp.createFolder(folderName);
  }
  var blob = Utilities.newBlob(decodedData).setContentType('application/pdf').setName(fileName);
  var file = targetFolder.createFile(blob);
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var linkCell = sheet.getRange("C3");
  linkCell.setValue(file.getUrl());
  SpreadsheetApp.getUi().alert('อัปโหลดไฟล์ PDF เสร็จสิ้น');
  return file.getUrl();
}

4. กดสร้างหน้าใหม่สำหรับใส่โค๊ด HTML (ตามรูป) กดเครื่องหมาย + แล้วเลือก HTML โดยให้ตั้งชื่อว่า uploadForm ภายในหน้าของ uploadForm ให้ลบโค๊ดที่มีมาให้ ออกให้หมดแล้วคัดลอกโค๊ด ด้านล่างนี้ไปใส่แทน

การสร้างหน้า HTML ชื่อ uploadForm ใน Apps Script

<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
    <style>
      body {
        font-family: Arial, sans-serif;
        margin: 20px;
      }
      input[type="file"] {
        margin-bottom: 10px;
      }
      #linkContainer {
        margin-top: 20px;
      }
      #linkContainer a {
        display: block;
        margin-top: 10px;
      }
    </style>
  </head>
  <body>
    <input type="file" id="fileInput" onchange="handleFileSelect(event)">
    <div id="linkContainer"></div>
    <script>
      function handleFileSelect(event) {
        var files = event.target.files;
        var file = files[0];
        var reader = new FileReader();
        reader.onload = function(e) {
          var base64Data = e.target.result.split(',')[1];
          google.script.run.withSuccessHandler(showLink).uploadFileToDrive(base64Data, file.name);
        };
        reader.readAsDataURL(file);
      }
      function showLink(url) {
        var linkContainer = document.getElementById('linkContainer');
        linkContainer.innerHTML = '';
        var link = document.createElement('a');
        link.href = url;
        link.textContent = 'ไฟล์ PDF';
        link.target = '_blank';
        linkContainer.appendChild(link);
        google.script.host.close();
      }
    </script>
  </body>
</html>

หลังจากทำเสร็จถึงขั้นตอนนี้แล้ว ก็ให้กดบันทึก แล้วกดปุ่ม เรียกใช้ แต่อย่าลืมนะว่า ต้องไปสร้างโฟลเดอร์ใน Google drive ตามชื่อในข้อ2 เรียบร้อยก่อน

5. พอกดเรียกใช้แล้ว Google จะให้เรากดอนุญาตสิทธิ์การเข้าถึง ให้กดตามขั้นตอนนี้เลย

ขั้นตอนการอนุญาตสิทธิ์การเข้าถึงของ Google

6. ไปที่หน้าชีต เพื่อกำหนดให้ สามารถ กดปุ่ม แล้วเรียกใช้งาน Script ที่เราเขียนไว้ โดยการ กดที่ปุ่ม ที่มุมขวาของปุ่มจะมี จุดไข่ปลาสามจุด ให้กดแล้วเลือก กำหนดสคริปต์ จะมีหน้าต่างขึ้นมา ให้ใส่ชื่อ openUploadForm ลงไปแล้วกด ตกลง

การกำหนดสคริปต์ openUploadForm ให้กับปุ่มบนหน้าชีต

หลังจากที่ทำทุกขั้นตอนครบแล้ว เราลองมากดใช้งานกัน ว่าสามารถใช้งานได้ตามตัวอย่างนี้ไหม ถ้าหากใครไม่สามารถ รัน ได้ตามตัวอย่าง ก็ลองกลับไปเช็คใหม่ ตั้งแต่ขั้นตอนแรกอีกครั้งนะครับ

ดาวโหลดเทมเพลตฟรี

สนใจเทมเพลต Google Sheet?

ดูเทมเพลตสำเร็จรูปพร้อมใช้งานสำหรับธุรกิจของคุณ จ่ายครั้งเดียว ใช้ได้ตลอดชีพ

ดูเทมเพลตทั้งหมด
Google sheet สำหรับอัพโหลดเก็บเอกสาร แนบไฟล์ได้ — Studio Photo Story