スプレッドシートを使っていて、データを転記する機会って意外と多いですよね。
- 同じ内容を何回も手打ちするのが面倒
- データが多いと時間が掛かる
- 手打ちで転記している間に記載内容を間違った
この記事では、GASを使ってスプレッドシートのデータを別シートに自動転記する方法をご紹介します。
GASによる方法を習得すれば、短時間で正確な転記が可能です。
しかも、転記はGASが自動で行ってくれますから、自分は他の仕事が出来るといったメリットもあります。(もちろん、転記中に休憩するのもOKです!笑)
- GASを使った転記方法が知りたい
- 手打ちでの転記をやめたい
- 短時間で正確な転記をしたい
- 転記はGASに任せて、時間を有効活用したい
はじめに
一概に転記と言っても、様々なパターンが考えられます。
今回は以下の2つのパターンを想定してスクリプトを考えていきます。
- 転記元のフォーマットを活かしたい場合
- 転記先のフォーマットを活かしたい場合
スプレッドシートで最低2枚のシートを用意して下さい。
転記の元となるデータが入力されたシートと転記先のシートがあれば大丈夫です。
今回の例では”【転記元】人事データ” と ”【転記先】抜粋データ”の2つのシートを使用してご紹介します。
転記までの大まかな流れは以下の通りです↓
①スプレッドシートを取得 → ②使用するシートを取得 → ③転記元のセル範囲 (とデータ)を取得
→ ④転記先のセル範囲を取得 → ⑤転記
GASの始め方や基本的な扱い方から再確認したいという方は、過去の記事をご参照下さい↓
それでは、それぞれの想定パターンごとにご紹介していきます!
転記元のフォーマットを活かしたい場合
下の図のように、フォントやフォントサイズ、セルの背景色を変えたり、太字や斜体、斜線を使ったデータって多いですよね。
これらをそのままのフォーマットで転記したい場合、getRangeメソッドでセル範囲を取得して、copyToメソッドでセルをそのまま転記すればOKです。
分かりやすく言うと、セル範囲を枠ごと転記するイメージです。
サンプルコードは以下の通りです↓
function transfer1() {
//使用するシートを取得
const ss = SpreadsheetApp.getActiveSpreadsheet(); //アクティブなスプレッドシートを取得
const original_sheet = ss.getSheetByName('【転記元】人事データ'); //転記元のシートを取得
const posted_sheet = ss.getSheetByName('【転記先】抜粋データ'); //転記先のシートを取得
//セル範囲を取得
const original_range = original_sheet.getRange(2,1,20,5); //転記元の範囲を取得
original_range.copyTo(posted_sheet.getRange(2,1,20,5)); //転記先の範囲(A2:E21)を取得して転記
}
今回は”【転記元】人事データ” シートからA2:E21のセル範囲(登録番号、氏名、身長、体重、血液型の欄)を取得し、 ”【転記先】抜粋データ” シートの同じくA2:E21の範囲に転記してみました。
上のコードの中で、実際にセル範囲を取得して転記している部分はこちらです↓
//セル範囲を取得
const original_range = original_sheet.getRange(2,1,20,5); //転記元の範囲を取得
original_range.copyTo(posted_sheet.getRange(2,1,20,5)); //転記先の範囲(A2:E21)を取得して転記
getRange(2,1,20,5)の部分をgetRange(‘A2:E21’)と記載してもOKです。
スクリプトを実行すると、こんな感じになります↓ (メニューボタンからスクリプトを実行したい場合は過去の記事をご参照下さい。)
転記した部分は、ちゃんと転記元のフォーマットが引き継がれていますね。
- 転記元のフォーマットも一緒に転記したい場合は、セル範囲ごと転記すると楽
- getRangeメソッドでセル範囲を取得する
- copyToメソッドでセル範囲ごと転記する
転記先のフォーマットを活かしたい場合
下の図のように、転記先のフォーマットを崩したくない場合もありますよね。
このような場合、先程のgetRangeメソッドを使用すると、転記した部分のフォーマットが崩れてしまいます。
ですので、今度はgetValueメソッドでセル内のデータのみを取得して、setValueメソッドでデータを転記する必要があります。
サンプルコードは以下の通りです↓
function transfer2() {
//使用するシートを取得
const ss = SpreadsheetApp.getActiveSpreadsheet(); //アクティブなスプレッドシートを取得
const original_sheet = ss.getSheetByName('【転記元】人事データ'); //転記元のシートを取得
const posted_sheet = ss.getSheetByName('【転記先】抜粋データ'); //転記先のシートを取得
//セルデータを取得
const original_values = original_sheet.getRange(2,1,20,5).getValues(); //転記元の範囲(A2:E21)とデータを取得
posted_sheet.getRange(2,1,20,5).setValues(original_values); //転記先の範囲(A2:E21)を取得してデータを転記
}
上のコードの中で、実際にデータを取得して転記している部分はこちらです↓
//セルデータを取得
const original_values = original_sheet.getRange(2,1,20,5).getValues(); //転記元の範囲(A2:E21)とデータを取得
posted_sheet.getRange(2,1,20,5).setValues(original_values); //転記先の範囲(A2:E21)を取得してデータを転記
スクリプトを実行すると、こんな感じになります↓
データだけが転記されていますね。
- 転記先のフォーマットを崩したくない場合は、セル範囲からデータだけ転記する
- getValueメソッドでセル内のデータを取得する
- setValueメソッドでデータを転記する
まとめ
今回は『GASでスプレッドシートのデータを別シートに転記する方法』についてご紹介しました。
転記元のフォーマットを活かす場合でも、転記先のフォーマットを活かす場合でも、セル範囲やデータの取得方法が分かれば簡単に転記できます。
GAS初心者でもすぐに出来ると思うので、ぜひ挑戦してみて下さい!
今後は、『必要なデータだけを抜粋して自動転記する方法』や、『行列を反転して転記する方法』についてもご紹介する予定です。
お楽しみに!
コメント