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

สร้างคลัง 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 (let 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

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