[ライブラリ][GAS]SymDiffChecker

GAS

どうも。つじけ(tsujikenzo)です。このシリーズでは「棚卸データの突合」についてお届けしています。全5回になりましたが今回で最終回です。

前回のおさらい

2つのデータテーブルの突合を行うのが目的ですが、その過程でライブラリを作成することができました。

[GAS]棚卸データの突合 Stock4
どうも。つじけ(tsujikenzo)です。このシリーズでは「棚卸データの突合」についてお届けしています。全3~4回の今日は4回目です。 延長戦で第5回まで行く気がしています💦前回のおさらいさて、前回は「テーブルを連想配列で取得する...

今日はライブラリ[SymDiffChecker]のマニュアルをご紹介させていただきます。

Overview

SymDiffChecker 1.0

(c) 2021 Kenzo Tsuji all rights reserved

GitHub Repository

coming soon

Introduction

Function to get the symmetric difference between two tables. You can select up to 5 column names for each table. The number and order of columns to compare must be the same. Joins all the specified column names and compares the two tables.

Sample sheet

Returns

[ [ 'IDNo', '', 'ID001123499' ],[ 'ID2No2', 'ID001123457', 'ID001123458' ] ]

Script ID

1x-D0oVh3btCClcTvNUHRhYbzKlU9XaWdoAVh1bEAAMuMIlPc-nkCSl1f

Method

.symDiffChecker(…arr)

@param {string} Original Sheet ID
@param {string} Original Sheet Name
@param {string} Compared Sheet ID
@param {string} Compared Sheet Name
@param {string} Column Name 1 from Original Sheet
@param {string} Column Name 2 from Original Sheet
@param {string} Column Name 3 from Original Sheet
@param {string} Column Name 4 from Original Sheet
@param {string} Column Name 5 from Original Sheet
@param {string} Column Name 1 from Compared Sheet
@param {string} Column Name 2 from Compared Sheet
@param {string} Column Name 3 from Compared Sheet
@param {string} Column Name 4 from Compared Sheet
@param {string} Column Name 5 from Compared Sheet
@return {array} Symmetric difference 2d Array
@Library SpreadsheetDataConverterToObject(Script ID:
1s4kGJwF2eG-WGmeqgLWeqQtIBRAXUZbbh3fQ3f7QHvNywubO99nduFIY)

let [orgSsId,orgSheetName,cmpSsId,cmpSheetName,param1,param2,param3,param4,param5,param6,param7,param8,param9,param10] = arr;

const orgArray = SpreadsheetDataConverterToObject.getElementsArray(orgSsId,orgSheetName);
const cmpArray = SpreadsheetDataConverterToObject.getElementsArray(cmpSsId,cmpSheetName);

const orgValues = orgArray.map(element => [[element[param1],element[param2],element[param3],element[param4],element[param5]].join(``)]).flat();
const cmpValues = cmpArray.map(element => [[element[param6],element[param7],element[param8],element[param9],element[param10]].join(``)]).flat();

const orgDiffs = orgValues.filter(element => cmpValues.indexOf(element) === -1);
const cmpDiffs = cmpValues.filter(element => orgValues.indexOf(element) === -1);

return [orgDiffs, cmpDiffs];

README File

coming soon

Sources

/**
* 2つのテーブルの差分を返す 
*
* @param {string} オリジナルSheet ID
* @param {string} オリジナルシート名
* @param {string} 比較Sheet ID
* @param {string} 比較シート名
* @param {string} オリジナルシート列名1
* @param {string} オリジナルシート列名2
* @param {string} オリジナルシート列名3
* @param {string} オリジナルシート列名4
* @param {string} オリジナルシート列名5
* @param {string} 比較シート列名1
* @param {string} 比較シート列名2
* @param {string} 比較シート列名3
* @param {string} 比較シート列名4
* @param {string} 比較シート列名5
* @return {array} 両テーブルの差分の2次元配列
* @Library SpreadsheetDataConverterToObject(Script ID:
1s4kGJwF2eG-WGmeqgLWeqQtIBRAXUZbbh3fQ3f7QHvNywubO99nduFIY)
*/
function symDiffChecker(...arr) {

let [orgSsId,orgSheetName,cmpSsId,cmpSheetName,param1,param2,param3,param4,param5,param6,param7,param8,param9,param10] = arr;

//引数がない時は下記4行をコメントインしてください
// const orgArray = SpreadsheetDataConverterToObject.getElementsArray('1Z_RS7jaK4yAHtiRSNiiKe-zKEm61OBEUUlulqF67AAw','シート1');
// const cmpArray = SpreadsheetDataConverterToObject.getElementsArray('1Z_RS7jaK4yAHtiRSNiiKe-zKEm61OBEUUlulqF67AAw','シート1');
// [param1,param2,param3,param4,param5] = ['ID','No','','',''];
// [param6,param7,param8,param9,param10] = [‘ID2','No2','','',''];

const orgArray = SpreadsheetDataConverterToObject.getElementsArray(orgSsId,orgSheetName);
const cmpArray = SpreadsheetDataConverterToObject.getElementsArray(cmpSsId,cmpSheetName);

const orgValues = orgArray.map(element => [[element[param1],element[param2],element[param3],element[param4],element[param5]].join(``)]).flat();
const cmpValues = cmpArray.map(element => [[element[param6],element[param7],element[param8],element[param9],element[param10]].join(``)]).flat();

const orgDiffs = orgValues.filter(element => cmpValues.indexOf(element) === -1);
const cmpDiffs = cmpValues.filter(element => orgValues.indexOf(element) === -1);

return [orgDiffs, cmpDiffs];

// console.log([orgDiffs, cmpDiffs]);
}

まとめ

以上で、SymDiffChecker ver1.0のマニュアルになります。要件定義が難しい案件ですが、全ての人が使いやすいライブラリの形はまだ勉強したことないので、今後も経験値を積みながらブラッシュアップできればと思います。末永くよろしくお願いいたします。

このシリーズの目次

  1. [GAS]棚卸データの突合 Stock1
  2. [GAS]棚卸データの突合 Stock2
  3. [GAS]棚卸データの突合 Stock3
  4. [GAS]棚卸データの突合 Stock4
  5. [ライブラリ][GAS]SymDiffChecker
タイトルとURLをコピーしました