function compareSheets() {
// 比較する2つのスプレッドシートを指定
var sheet1 = SpreadsheetApp.openById('スプレッドシート1のID').getSheetByName('シート名');
var sheet2 = SpreadsheetApp.openById('スプレッドシート2のID').getSheetByName('シート名');
// 2つのスプレッドシートのデータを取得
var data1 = sheet1.getDataRange().getValues();
var data2 = sheet2.getDataRange().getValues();
// 2つのスプレッドシートの行数と列数を取得
var numRows1 = sheet1.getLastRow();
var numRows2 = sheet2.getLastRow();
var numCols1 = sheet1.getLastColumn();
var numCols2 = sheet2.getLastColumn();
// 差分を格納する配列
var diff = [];
// スプレッドシート1にしか存在しない行を検索
for (var i = 0; i < numRows1; i++) {
var row1 = data1[i];
var found = false;
for (var j = 0; j < numRows2; j++) {
var row2 = data2[j];
if (row1.toString() == row2.toString()) {
found = true;
break;
}
}
if (!found) {
diff.push(["-"].concat(row1));
}
}
// スプレッドシート2にしか存在しない行を検索
for (var i = 0; i < numRows2; i++) {
var row2 = data2[i];
var found = false;
for (var j = 0; j < numRows1; j++) {
var row1 = data1[j];
if (row2.toString() == row1.toString()) {
found = true;
break;
}
}
if (!found) {
diff.push(["+"].concat(row2));
}
}
// 2つのスプレッドシートに共通する行で値が異なる行を検索
for (var i = 0; i < numRows1; i++) {
var row1 = data1[i];
for (var j = 0; j < numRows2; j++) {
var row2 = data2[j];
if (row1.toString() == row2.toString()) {
var rowDiff = [];
for (var k = 0; k < numCols1; k++) {
if (row1[k] != row2[k]) {
rowDiff.push(k);
}
}
if (rowDiff.length > 0) {
var diffRow = ["*"].concat(row1);
for (var k = 0; k < rowDiff.length; k++) {
var col = rowDiff[k];
diffRow[col + 1] = row2[col];
}
diff.push(diffRow);
}
}
}
}
// 差分を出力するスプレッドシートを作成
var diffSheet = SpreadsheetApp.create('差分').getActiveSheet();
// 差分を出力するスプレッドシートにヘッダーを追加
diffSheet.appendRow(["種類"].concat(sheet1.getDataRange().getValues()[0]));
// 差分を出力するスプレッドシートに差分データを追加
for (var i = 0; i < diff.length; i++) {
diffSheet.appendRow(diff[i]);
}
このコードはGoogle Apps Scriptで書かれたスプレッドシート上で動作するものです。
スプレッドシート1とスプレッドシート2のデータを比較し、異なるデータを含む新しいスプレッドシートを作成します。
このコードを実行するには、次の2つのスプレッドシートのIDを置き換える必要があります。
var sheet1 = SpreadsheetApp.openById('スプレッドシート1のID').getSheetByName('シート名');
var sheet2 = SpreadsheetApp.openById('スプレッドシート2のID').getSheetByName('シート名');
また、スプレッドシートのアクセス権限によっては、このコードを実行することができない場合があります。スプレッドシートのアクセス権限を確認し、適切な権限を与える必要があります。