คู่มือเริ่มใช้งานคลังอย่างรวดเร็ว

สร้างไลบรารี Google Apps Script ที่คุณใช้เพื่อนำแถวที่ซ้ำกันในข้อมูลสเปรดชีตออกได้

วัตถุประสงค์

  • ตั้งค่าสคริปต์
  • เรียกใช้สคริปต์

ข้อกำหนดเบื้องต้น

หากต้องการใช้ตัวอย่างนี้ คุณต้องมีข้อกำหนดเบื้องต้นต่อไปนี้

  • บัญชี Google (บัญชี Google Workspace อาจต้อง ได้รับการอนุมัติจากผู้ดูแลระบบ)
  • เว็บเบราว์เซอร์ที่มีสิทธิ์เข้าถึงอินเทอร์เน็ต

ตั้งค่าสคริปต์

วิธีสร้างคลังมีดังนี้

  1. ลงชื่อเข้าใช้บัญชี Google
  2. หากต้องการเปิดเครื่องมือแก้ไขสคริปต์ ให้ไปที่ script.google.com
  3. คลิกโปรเจ็กต์ใหม่ที่ด้านซ้ายบน
  4. ลบโค้ดในตัวแก้ไขสคริปต์ แล้ววางโค้ดต่อไปนี้

    sheets/removingDuplicates/removingDuplicates.gs
    /**
     * Removes duplicate rows from the current sheet.
     */
    function removeDuplicates() {
      const sheet = SpreadsheetApp.getActiveSheet();
      const data = sheet.getDataRange().getValues();
      const uniqueData = {};
      for (const row of data) {
        const key = row.join();
        uniqueData[key] = uniqueData[key] || row;
      }
      sheet.clearContents();
      const newData = Object.values(uniqueData);
      sheet.getRange(1, 1, newData.length, newData[0].length).setValues(newData);
    }
  5. คลิกบันทึก ไอคอนสำหรับบันทึกโปรเจ็กต์

  6. คลิกโปรเจ็กต์ที่ไม่มีชื่อที่ด้านซ้ายบน

  7. ตั้งชื่อสคริปต์ว่า Remove duplicate rows แล้วคลิก Rename

  8. คลิกทำให้ใช้งานได้ > การทำให้ใช้งานได้ใหม่

  9. คลิกเปิดใช้ประเภทการติดตั้งใช้งานข้างเลือกประเภท ไอคอนสำหรับเปิดใช้ประเภทการทำให้ใช้งานได้ > ไลบรารี

  10. ป้อนคำอธิบายของไลบรารี เช่น นำแถวที่ซ้ำกันออก ทุกคน ที่มีสิทธิ์เข้าถึงคลังจะดูคำอธิบายนี้ได้

  11. คลิกทำให้ใช้งานได้

  12. คลิกการตั้งค่าโปรเจ็กต์ ไอคอนสำหรับการตั้งค่าโปรเจ็กต์ ทางด้านซ้าย

  13. ในส่วนรหัส ให้คัดลอกรหัสสคริปต์เพื่อใช้ในขั้นตอนถัดไป

เรียกใช้สคริปต์

หากต้องการใช้ไลบรารี คุณต้องมีสิทธิ์ดูโปรเจ็กต์ Apps Script ของไลบรารีนั้นเป็นอย่างน้อย เนื่องจากคุณเป็นผู้สร้างไลบรารี คุณจึงมี สิทธิ์ที่จำเป็น ในการใช้งาน หากต้องการอนุญาตให้ผู้อื่นใช้ไลบรารี ให้สิทธิ์ดู สำหรับโปรเจ็กต์ Apps Script แก่บุคคลดังกล่าว

หากต้องการใช้คลัง ให้ทำดังนี้

  1. เปิดสเปรดชีต Google ชีตที่มีข้อมูลซึ่งมีแถวที่ซ้ำกัน หากต้องการใช้สเปรดชีตตัวอย่าง ให้ทำสำเนาสเปรดชีตตัวอย่างแถวที่ซ้ำกัน
  2. คลิกส่วนขยาย > Apps Script
  3. ข้างห้องสมุด ให้คลิกเพิ่มห้องสมุด
  4. ในส่วนรหัสสคริปต์ ให้วางรหัสสคริปต์จากโปรเจ็กต์ Apps Script ของไลบรารี ที่คุณคัดลอกไว้ในส่วนก่อนหน้า
  5. คลิกค้นหา
  6. เลือก 1 ในส่วนเวอร์ชัน
  7. คลิกเพิ่ม
  8. ลบโค้ดในตัวแก้ไขสคริปต์ แล้ววางโค้ดต่อไปนี้

    function runLibrary() {
     Removeduplicaterows.removeDuplicates();
    }
    
  9. ในเมนูแบบเลื่อนลงของฟังก์ชัน ให้เลือก runLibrary

  10. คลิกเรียกใช้

  11. กลับไปที่สเปรดชีตเพื่อดูข้อมูลที่อัปเดตแล้วโดยไม่มีแถวที่ซ้ำกัน

ตรวจสอบโค้ด

หากต้องการตรวจสอบโค้ด Apps Script สำหรับโซลูชันนี้ ให้คลิกดูซอร์สโค้ด

ดูซอร์สโค้ด

ก่อนอื่น สคริปต์จะเรียกสเปรดชีตครั้งเดียวเพื่อดึงข้อมูลทั้งหมด คุณเลือกอ่านชีตทีละแถวได้ แต่การดำเนินการ JavaScript จะเร็วกว่าการพูดคุยกับบริการอื่นๆ เช่น สเปรดชีต มาก ยิ่งคุณทำการเรียกใช้น้อยลงเท่าใด การดำเนินการก็จะยิ่งเร็วขึ้นเท่านั้น ซึ่งมีความสำคัญเนื่องจากสคริปต์แต่ละรายการ จะทำงานได้นานสูงสุด 6 นาที

sheets/removingDuplicates/removingDuplicates.gs
const sheet = SpreadsheetApp.getActiveSheet();
const data = sheet.getDataRange().getValues();

ตัวแปร data คืออาร์เรย์ 2 มิติของ JavaScript ที่มีค่าทั้งหมดในชีต newData คืออาร์เรย์ว่างที่สคริปต์จะวางแถวที่ไม่ซ้ำกันทั้งหมด

sheets/removingDuplicates/removingDuplicates.gs
const newData = Object.values(uniqueData);

forลูปแรกdataจะวนซ้ำแต่ละแถวในdataอาร์เรย์ 2 มิติ สําหรับแต่ละแถว ลูปที่ 2 จะทดสอบว่ามีแถวอื่นที่มีข้อมูลที่ตรงกันอยู่ในอาร์เรย์ newData หรือไม่ หากไม่ใช่รายการที่ซ้ำกัน ระบบจะส่งแถวไปยังอาร์เรย์ newData

sheets/removingDuplicates/removingDuplicates.gs
uniqueData[key] = uniqueData[key] || row;

สุดท้าย สคริปต์จะลบเนื้อหาที่มีอยู่ในชีตและแทรกเนื้อหาของอาร์เรย์ newData

sheets/removingDuplicates/removingDuplicates.gs
sheet.clearContents();
const newData = Object.values(uniqueData);
sheet.getRange(1, 1, newData.length, newData[0].length).setValues(newData);

การปรับเปลี่ยน

คุณแก้ไขคลังได้มากเท่าที่ต้องการเพื่อให้ตรงกับความต้องการ ส่วนต่อไปนี้ มีการแก้ไขที่ไม่บังคับ

นำแถวที่มีข้อมูลที่ตรงกันในบางคอลัมน์ออก

คุณอาจต้องการนำแถวที่มีข้อมูลที่ตรงกันในคอลัมน์เพียง 1 หรือ 2 คอลัมน์ออกแทนที่จะนำแถวที่ตรงกันทั้งหมดออก โดยคุณเปลี่ยน คำสั่งแบบมีเงื่อนไขได้

ในโค้ดตัวอย่าง ให้อัปเดตบรรทัดต่อไปนี้

    if(row.join() == newData[j].join()){
      duplicate = true;
    }

แทนที่บรรทัดด้วยโค้ดต่อไปนี้

    if(row[0] == newData[j][0] && row[1] == newData[j][1]){
      duplicate = true;
    }

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

ผู้ร่วมให้ข้อมูล

ตัวอย่างนี้สร้างโดย Romain Vialard ซึ่งเป็น Google Developer Expert ติดตาม Romain บน Twitter @romain_vialard

ตัวอย่างนี้ได้รับการดูแลโดย Google โดยได้รับความช่วยเหลือจาก Google Developer Expert

ขั้นตอนถัดไป