建立 Apps Script 程式庫,用來移除試算表資料中的重複資料列。
目標
- 設定指令碼。
- 執行指令碼。
必要條件
如要使用這個範例,您必須具備下列先決條件:
- Google 帳戶 (Google Workspace 帳戶可能會 需要管理員核准)。
- 可存取網際網路的網路瀏覽器。
設定指令碼
如要建構程式庫,請按照下列步驟操作:
- 登入 Google 帳戶。
- 如要開啟指令碼編輯器,請前往 script.google.com。
- 按一下左上方的「新增專案」。
刪除指令碼編輯器中的任何程式碼,然後貼上下方的程式碼。
按一下 [儲存
]。
按一下左上方的「未命名的專案」。
將指令碼命名為「移除重複的列」,然後按一下「重新命名」。
依序點選「部署」>「新增部署作業」。
按一下「選取類型」旁邊的「啟用部署類型」
>「媒體庫」。
輸入資料庫的說明,例如「移除重複列」。所有人 有權存取資料庫即可查看說明。
按一下「部署」。
按一下左側的「專案設定」圖示
。
複製「ID」下方的指令碼 ID,供後續步驟使用。
執行指令碼
如要使用程式庫,您至少需具備該程式庫的查看權限 Apps Script 專案。由於您建立了程式庫,因此擁有 必要權限 以便使用。如要讓其他人使用資料庫,請授予查看權限 。
如要使用這個程式庫,請按照下列步驟操作:
- 開啟含有重複資料列的 Google 試算表。使用條件 請先複製「重複的資料列範例」試算表。
- 依序按一下「擴充功能」>「Apps Script」。
- 按一下「程式庫」旁邊的 [新增資料庫] 。
- 在「指令碼 ID」部分,貼上程式庫 Apps Script 的指令碼 ID 您在前一節複製的專案
- 按一下「查詢」。
- 在「Version」(版本) 區段中,選取「1」。
- 按一下 [新增]。
刪除指令碼編輯器中的任何程式碼,然後貼上下方的程式碼。
function runLibrary() { Removeduplicaterows.removeDuplicates(); }
在函式下拉式選單中,選取「runLibrary」。runLibrary
按一下「執行」。
請返回試算表查看更新後的資料,且不含重複資料列。
查看程式碼
如要查看這項解決方案的 Apps Script 程式碼,請按一下「查看原始碼」 如下:
查看原始碼
首先,指令碼會向試算表發出單一呼叫,擷取所有 資料。您可以選擇逐列讀取工作表列,但 JavaScript 作業會 比起「試算表」等其他服務,溝通更加快速越少 通話速度越快。這點非常重要 執行時間最長為 6 分鐘。
變數 data
是一個 JavaScript 2D 陣列,其中包含
工作表中的所有值newData
是空白陣列,其中
指令碼會放入所有非重複資料列。
第一個 for
迴圈會針對 data
中的每個資料列疊代
2D 陣列。對每個資料列,第二個迴圈會測試是否另一個含有
newData
陣列中已有相符的資料。如果不是
重複,該列就會推送至 newData
陣列中。
最後,指令碼會刪除工作表的現有內容,然後插入
newData
陣列的內容。
修正規則
你可以視需要編輯資料庫,數量不限。以下是 視需要修改
移除部分資料欄中包含相符資料的資料列
您可能不想移除完全相符的資料列,而改為移除 因此只有一或兩個資料欄中會比對出相符的資料做法是變更 條件陳述式。
在程式碼範例中,更新以下這行內容:
if(row.join() == newData[j].join()){ duplicate = true; }
使用下列程式碼取代這一行:
if(row[0] == newData[j][0] && row[1] == newData[j][1]){ duplicate = true; }
上述條件陳述式會在兩個資料列含有 工作表第一和第二欄的相同資料
貢獻者
這個範例是由 Google Developers 專家 Romain Vialard 所建立。追蹤 Romain 的 Twitter 專頁 @romain_vialard。
這個範例是由 Google 在 Google Developers 專家的協助下維護。