【効率化の秘訣】GASで複数のスプレッドシートのデータを1つに統合する方法
「複数のスプレッドシートを1つのデータに統合したい!」
「GASで業務効率化ができるって聞いたけどよくわからん」
「非エンジニアでも簡単にできる方法教えて!」
本記事ではこのような方を対象に、GAS(Google App Script)を使って複数のスプレッドシートのデータを1つのスプレッドシートに統合する方法をご紹介します。
■本記事で分かること
GASを使って複数のスプレッドシートのデータを1つのスプレッドシートに統合する方法
■本記事の信頼性
私は、本業でChatGPTなどのAIツールを活用して効率化を実現し、ほぼ毎日定時で帰宅。家族との充実した時間を確保している「なおき」といいます。
AIと全く無縁の体育系で文系出身(数学Ⅱで終わりました)の私でもできる時短術をわかりやすく説明できるよう、Xなどを活用して情報発信しています。
この記事を読んでくださった方々が1分でも早く帰れることを願い、今回はGASを使って複数のスプレッドシートのデータを1つのスプレッドシートに統合する方法をご紹介します!
1.Googleスプレッドシートの準備
まずは、Googleスプレッドシートで重複した内容が記載されているデータを作成します。
今回は複数のスプレッドシートデータを1つに統合するため、2つのデータを作成します。
1つ目のシート名は「メインシート」
2つ目のシート名は「関連シート」とします。
ここで、統合するデータの関連性を持たせるため、「ID」だけは共通のデータとして設定します。
これにより「IDが3の修一さん」と「IDが4の人事の方」は異なるデータということが分かります。
今回は、メインシートを基準にデータを統合します。
このため、統合時にID3の修一さんには統合すべきデータがないということになります。
実際に統合した際の状況は最後の方に出てくるので、まずは作業を進めて下さい。
2.GAS(Google App Script)の設定
それでは次にGASの設定に入っていきます。
ステップ1:Apps Scriptを開く
Googleスプレッドシートのメニューバーから
「拡張機能」→「Apps Script」を選択します。
ステップ2:コードの入力と一部修正
Apps Scriptが開いたら、デフォルトで入力されている部分のコードを削除してください。
同じところに以下のコードをコピペします。
// スプレッドシートのIDとシート名を設定
var mainSpreadsheetId = 'メインデータソースのスプレッドシートID';
var relatedSpreadsheetId = '関連データソースのスプレッドシートID';
var mainSheetName = 'メインシート';
var relatedSheetName = '関連シート';
var outputSheetName = '統合データ';
function integrateData() {
var mainSs = SpreadsheetApp.openById(mainSpreadsheetId);
var relatedSs = SpreadsheetApp.openById(relatedSpreadsheetId);
var mainSheet = mainSs.getSheetByName(mainSheetName);
var relatedSheet = relatedSs.getSheetByName(relatedSheetName);
var mainData = mainSheet.getDataRange().getValues();
var relatedData = relatedSheet.getDataRange().getValues();
var integratedData = [];
// ヘッダー行の統合
integratedData.push(mainData[0].concat(relatedData[0].slice(1))); // 2つ目のデータソースの最初の列(ID列)を除外して統合
// メインデータソースの各行に対して関連データを検索し統合
for (var i = 1; i < mainData.length; i++) {
var rowData = mainData[i];
var match = relatedData.find(row => row[0] === rowData[0]); // IDでマッチング
if (match) {
integratedData.push(rowData.concat(match.slice(1))); // ID以外のデータを統合
} else {
integratedData.push(rowData.concat(Array(relatedData[0].length - 1).fill(''))); // 関連データが見つからない場合は空のデータで埋める
}
}
// 統合データを新しいシートに出力
var outputSheet = mainSs.getSheetByName(outputSheetName) || mainSs.insertSheet(outputSheetName);
outputSheet.clear(); // 既存のデータをクリア
outputSheet.getRange(1, 1, integratedData.length, integratedData[0].length).setValues(integratedData);
}
このコードは、メインシートに対して関連シートから関連するデータを統合し、統合データというシートを新たに作成するコードです。
使用にあたってはご自身のスプレッドシートと同様の形式にしていく必要があるので、以下の部分を修正してください。
var mainSpreadsheetId = 'メインデータソースのスプレッドシートID';
var relatedSpreadsheetId = '関連データソースのスプレッドシートID';
「メインデータソースのスプレッドシートID」と「関連データソースのスプレッドシートID」の部分を実際のシートのIDと同じにしてください。
IDはそれぞれのスプレッドシートのURLの👇の部分です。
実際に修正したコードは以下のようになります。
修正後は必ず保存マーク💾を押してください。
ステップ3:実行及び権限の承認
保存出来たら、「▷実行」の部分をクリックして関数integrateDataを実行します。
実行すると権限の承認を求められるので、以下の画像の赤枠部分をクリックしていってください。
3.GAS(Google App Script)の実行
ここまでの作業が終了したら、最初に作成したGoogleスプレッドシートに戻ってください。
メインシートのあった1つ目のスプレッドシートに「統合データ」が新たに作成され、メインシートに関連する部分だけが統合されていることが分かります。
以上で作業は終わりです!
お疲れ様でした!
4.まとめ
今回は、「GASを使って複数のスプレッドシートのデータを1つのスプレッドシートに統合する方法」をテーマに紹介しましたが、いかがだったでしょうか?
関連するデータを持つ2つのGoogleスプレッドシートの準備
GAS(Google App Script)のコードに対する各ID入力
GASの実行
上記の内容が実行できれば、ワンクリックで複数のスプレッドシートのデータを1つのスプレッドシートに統合できるようになります!
データベースが複数に渡り、1つ1つをコピペで結合していたような方は、今回のコードを実際に使用しているデータ形式にカスタマイズすることができれば、業務効率化につながるのではないでしょうか?
そして、ChatGPTで自分に合ったGASコードを作成するためのプロンプト集を作成しましたので、是非ご覧ください!
今回紹介した内容で皆さんの業務が少しでも効率化できれば、スキ、SNSでの紹介をしていただけると大変励みになりますので、何卒よろしくお願いします!
このほか、AI×時短術の知識をX(旧Twitter)で紹介していますので、是非フォローしてください!
この記事が気に入ったらサポートをしてみませんか?