シート間でマッチングして最終列に転記する
アクティブなシートと右隣のシートのデータを比較し、マッチしたデータの右端の値をアクティブなシートの最終列に転記する
function writeToActiveSheet() {
var activeSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var activeSheet = activeSpreadsheet.getActiveSheet();
var activeData = activeSheet.getDataRange().getValues();
var rightSheet = activeSpreadsheet.getActiveSheet().getNextSibling();
var rightData = rightSheet.getDataRange().getValues();
for (var i = 0; i < activeData.length; i++) {
for (var j = 0; j < rightData.length; j++) {
if (JSON.stringify(activeData[i]) === JSON.stringify(rightData[j])) {
var dataToWrite = rightData[j][rightData[j].length - 1];
activeSheet.getRange(i + 1, activeData[i].length + 1).setValue(dataToWrite);
break;
}
}
}
}
解説
writeToActiveSheet()関数: この関数は、アクティブなスプレッドシートからデータを取得し、アクティブなシートとその隣のシートのデータを比較して値を書き込みます。var activeSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();:SpreadsheetApp.getActiveSpreadsheet()を使用してアクティブなスプレッドシートオブジェクトを取得し、activeSpreadsheet変数に代入しています。var activeSheet = activeSpreadsheet.getActiveSheet();:activeSpreadsheet.getActiveSheet()を使用してアクティブなシートオブジェクトを取得し、activeSheet変数に代入しています。var activeData = activeSheet.getDataRange().getValues();:activeSheet.getDataRange().getValues()を使用してアクティブなシートのデータ範囲の値を二次元配列として取得し、activeData変数に代入しています。var rightSheet = activeSpreadsheet.getActiveSheet().getNextSibling();:activeSpreadsheet.getActiveSheet().getNextSibling()を使用してアクティブなシートの隣のシートオブジェクトを取得し、rightSheet変数に代入しています。var rightData = rightSheet.getDataRange().getValues();:rightSheet.getDataRange().getValues()を使用して隣のシートのデータ範囲の値を二次元配列として取得し、rightData変数に代入しています。for (var i = 0; i < activeData.length; i++) { ... }: アクティブなシートのデータを走査するためのループです。iの値は0からactiveDataの要素数未満まで増加します。for (var j = 0; j < rightData.length; j++) { ... }: 隣のシートのデータを走査するためのループです。jの値は0からrightDataの要素数未満まで増加します。if (JSON.stringify(activeData[i]) === JSON.stringify(rightData[j])) { ... }: アクティブなシートと隣のシートのデータを文字列として比較して一致するかどうかを判断します。var dataToWrite = rightData[j][rightData[j].length - 1];: 一致する場合、rightDataの最後の要素をdataToWrite変数に代入します。activeSheet.getRange(i + 1, activeData[i].length + 1).setValue(dataToWrite);: 一致したデータをアクティブなシートの適切なセルに書き込みます。break;:ifの条件が一致した場合、内側のループを終了します。



コメント