どうも。つじけ(tsujikenzo)です。このシリーズでは「在庫管理バーコード」についてお届けしています。2つのデータテーブルの突合を行うのが目的ですが、その過程で作成できたfunctionをライブラリ化しました。シリーズはひとまず今回で最終回です。
前回のおさらい
前回でfunctionが完成しましたので、

こちらの記事を参考にライブラリ化してください。(新IDE対応済)

いつものようにスタンドアロンスクリプトファイルは\TG_Solution Business Dept\02_project[GAS]Original Libraryに保存しています。
それではこれから[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(orgSsId,orgSheetName,cmpSsId,cmpSheetName,param1,param2,param3,param4,param5,param6,param7,param8,param9,param10) {
//引数がない時は下記4行をコメントインしてください
// const orgArray = SpreadsheetDataConverterToObject.getElementsArray('1Z_RS7jaK4yAHtiRSNiiKe-zKEm61OBEUUlulqF67AAw','シート1');
// const cmpArray = SpreadsheetDataConverterToObject.getElementsArray('1Z_RS7jaK4yAHtiRSNiiKe-zKEm61OBEUUlulqF67AAw','シート1');
// [param1,param2,param3,param4,param5] = ['商品ID','納品書番号','','',''];
// [param6,param7,param8,param9,param10] = ['商品ID2','納品書番号2','','',''];
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のマニュアルになります。要件定義が難しい案件ですが、全ての人が使いやすいライブラリの形はまだ勉強したことないので、今後も経験値を積みながらブラッシュアップできればと思います。末永くよろしくお願いいたします。
社内在庫管理バーコードの突合はどうなったか?ですが、途中から完全に放置しましたが、このライブラリがあれば問題無いと思います💦機会があれば記事を書きます。
Comments