[GAS][SymDiffChecker]その弐

Uncategorized

Sudah makan ? てら、です。引き続き、SymDiffCheckerについてブログに書き留めていきます。前回はライブラリを追加した話でした。今日は実際のデータを使って、functionの動きを確かめていく流れです。それでは、よろしくお願いします。

前回の内容↓

照合するデータ

さて、今回はこちらの2つのシートの差分を確かめることが目的です。
シート1がこちら


シート2がこちら

SymDiffCheckerの実用

実際にコードを走らせましょう。必要なシートidとシート名及びparamを指定します。

/**
* ドキュメントから新規スプレッドシートを作成する
*
* @param {string} ドキュメントID
* @param {string} スプレッドシートの保存先フォルダID
* @return {array} 対象差
*/

function doingSymDiffChecker(){
const orgSsId       = “1eEVFtgRF7zDuKcjJlVnInRYv7kAZLHHhcNRLHPbi9F0”;
const orgSheetName  = “シート1”;
const cmpSsId       = “1eEVFtgRF7zDuKcjJlVnInRYv7kAZLHHhcNRLHPbi9F0”;
const cmpSheetName  = “シート2”;

const [param1,param2,param3,param4,param5] = [‘商品ID’,“賞味期限”,‘納品書番号’,“”,“”];
const [param6, param7, param8, param9, param10] = [‘部品ID’,“製造日”,‘送り状No.’,“”,“”];

const selectData = SymDiffChecker.symDiffChecker(orgSsId,orgSheetName,cmpSsId,cmpSheetName,param1,param2,param3,param4, param5, param6,param7,param8,param9,param10);
console.log(selectData);
}

ログの中身を見ると、対象差が出ています。

新しいシート(シート名”対象差”)へsetValues

さて、差分を配列で格納したものを新しいシートに張り付けて見ましょう。
コードの詳しい解説は割愛します。

/**
* ドキュメントから新規スプレッドシートを作成する
*
* @param {string} ドキュメントID
* @param {string} スプレッドシートの保存先フォルダID
* @return {array} 対象差
*/

function doingSymDiffChecker(){
const orgSsId       = “1eEVFtgRF7zDuKcjJlVnInRYv7kAZLHHhcNRLHPbi9F0”;
const orgSheetName  = “シート1”;
const cmpSsId       = “1eEVFtgRF7zDuKcjJlVnInRYv7kAZLHHhcNRLHPbi9F0”;
const cmpSheetName  = “シート2”;

const [param1,param2,param3,param4,param5] = [‘商品ID’,“賞味期限”,‘納品書番号’,“”,“”];
const [param6, param7, param8, param9, param10] = [‘部品ID’,“製造日”,‘送り状No.’,“”,“”];

const selectData = SymDiffChecker.symDiffChecker(orgSsId,orgSheetName,cmpSsId,cmpSheetName,param1,param2,param3,param4, param5, param6,param7,param8,param9,param10);

let arryOrg  = [];
for(const orgData of selectData[0]){
arryOrg.push([orgData])
}
arryOrg.shift();
arryOrg.unshift([
“バーコードスキャン不一致”]);

let arryCmp = [];
for(const cmpData of selectData[1]){
arryCmp.push([cmpData])
}
arryCmp.shift();
arryCmp.unshift([
“在庫表不一致”]);

const setSheetName  = “対象差”;
const ss      = SpreadsheetApp.getActiveSpreadsheet();
const sheet   = ss.getSheetByName(setSheetName);
sheet.clear();
sheet.getRange(
1, 1, arryOrg.length, arryOrg[0].length).setValues(arryOrg);
sheet.getRange(
1, 2, arryCmp.length, arryCmp[0].length).setValues(arryCmp);

}

実行結果がこちらです

setValuesまで出来ましたね。paramとシート名を変更すればみなさんのシートでも可能なコードです。後は、好みのコーディングをお願いします。
これは棚卸なので不一致は良くないことですが、わかりやすいように敢えてデータが存在しているようにしています。 実務で正しいのはシートが何もないクリアな状態です。

ちなみに上記のコードで棚卸が一致した場合は以下のようにダイアログボックスが表示され、シートはクリアされています。

まとめ

少し長くなりましたが、いかがだったでしょうか? コードを書く時に一つの壁になるのが配列やオブジェクトの処理です。SymDiffCheckerはそれを解決してくれる良いライブラリではないでしょか。最後までありがとうございました。

Comments

Copied title and URL