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

สร้างไลบรารี 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 แล้วคลิกเปลี่ยนชื่อ

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

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

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

  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 แรกจะวนซ้ำแต่ละแถวในอาร์เรย์ 2 มิติ data สำหรับแต่ละแถว ลูปที่ 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 ติดตาม Romain ได้ที่ Twitter @romain_vialard

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

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