こんにちは。ごすけです。
今回はスプレッドシートに入力用シートを作成し、別シートに行列を入れ替えて追記するコードを紹介したいと思います。
データの入力・集計としては「Google フォーム」と「スプレッドシート」を使用している方が多いと思います。
ですが少人数で運用する場合、いちいちGoogleフォームを開いて入力するのも面倒。
別シートに「入力用シート」の画面を作って済ませたほうが手っ取り早い場合もあります。
今回紹介する方法はGoogleAppsScriptを使用してスプレッドシートのみで完結できるようにしています。
シートの作り方からコードの貼り付け方法までGAS初心者にもわかりやすく解説できるよう心がけました。
さっそくシートを紹介していきましょう!
- 入力シートから別シートへ追記する
- 入力シートで取得した範囲の行列を入れ替える(転記)
- シートの作成方法からコードまでを解説
シートの作成
まずはスプレッドシートを作成していきます。
「入力シート」と「履歴」のシートの2つを準備します。


GASを起動するための画像も準備します。
「挿入」→「図形描画」より図形を作ってください。


コードの紹介
それではコードの紹介です。
高度な内容をごっそり省きました。
決められた範囲を別シートの最終行に転記していくシンプルなコードになっています。
次にGASの準備です。
「拡張機能」→「Apps Script」を選択。

以下のコードをコピペして貼り付けてください
function myFunction() {
//スプレッドシートのID取得
var SpreadSheet = SpreadsheetApp.getActiveSpreadsheet();
//スプレッドシートのシート名取得
var SheetName = SpreadSheet.getSheetByName('入力シート');
//転記する範囲を選択
var SetValues = SheetName.getRange('B1:B3'); //←行を増やす場合ここを変更
//転記先のシート名を取得
var CopySheetName = SpreadSheet.getSheetByName('履歴');
//転記先の最終行を取得
var LastRow = CopySheetName.getLastRow();
//行列を入れ替えて記入
SetValues.copyTo(CopySheetName.getRange(LastRow+1,1,1,3), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, true);
//記入する範囲が増えた場合、「3」を変更してください。
};
最後に図形にスクリプトを割り当てて完成です。

これを実行すると「入力シート」から「履歴」へ転記されます。


コードの解説
使用した関数の中でポイントを2つ紹介します。
「getLastRow」関数で履歴シートの最終行を取得
getLastRow()で履歴シートの最終行を取得。
var LastRow = CopySheetName.getLastRow();
var LastRow = CopySheetName.getLastRow();
「LastRow+1」で最終行の空欄を選択できます。
SetValues.copyTo(CopySheetName.getRange(LastRow+1,1,1,3), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, true);
};
SetValues.copyTo(CopySheetName.getRange(LastRow+1,1,1,3), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, true);
};
「CopyTo」と「CopyPasteType」でペーストする
以下のコードで行列を入れ替える、つまり転置して貼り付けをします。
//行列を入れ替えて記入
SetValues.copyTo(CopySheetName.getRange(LastRow+1,1,1,3), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, true);
};
//行列を入れ替えて記入
SetValues.copyTo(CopySheetName.getRange(LastRow+1,1,1,3), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, true);
};
追記するデータが増えた場合の変更箇所
追記したいデータが増えた場合、以下の箇所を変更してください
入力シート側
var SetValues = SheetName.getRange(‘B1:B3‘); //←行を増やす場合ここを変更
var SetValues = SheetName.getRange('B1:B3'); //←行を増やす場合ここを変更
出力シート側
SetValues.copyTo(CopySheetName.getRange(LastRow+1,1,1,3), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, true);
//記入する範囲が増えた場合、「3」を変更してください。
etValues.copyTo(CopySheetName.getRange(LastRow+1,1,1,3), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, true);
//記入する範囲が増えた場合、「3」を変更してください。
行列を入れ替えると入力画面が見やすくなる
こちらを御覧ください。

この入力画面すごく見づらいと思いませんか?
使う人の気持ちを考慮してませんよね?
入力する項目が少なければそのままでも良いと思いますが、項目が増えると横にスライドしながら入力することになります。
でも行列を入れ替えた入力フォームであればどうでしょう?

縦に並べて入力できる方が見やすいですよね?
少しの手間を入れてあげるだけで使う人が誤入力する確率がぐっと下がると思います。
まとめ
今回はスプレッドシートに入力用シートを作成し、別シートに行列を入れ替えて追記するコードを紹介しました。
初歩的なコードのみの紹介だったので、メンテナンス性には欠けていると思います。
でも初心者の方は、複雑にされたコードを紹介されても理解できないのではないでしょうか?
少なくとも私がGASを学び始めた初期の頃は2つ以上のコードを紹介たら全くわかりませんでした。
まずは自分のやりたいことを簡単なコードで実現する。
馴れてくればより複雑なコードを書いてみるといった感じでステップアップすればいいと思います。
少し難易度の上がった転記方法も紹介しているので、よろしければ参考にしてください。

Google Apps Scriptを学ぶためにオススメの教材
最後にGASを学ぶためのオススメの教材をご紹介します。
今西さんのUdemy講座
UdemyのGAS関連で最も視聴されている教材です。
私が一番最初にGASを学ぶために購入した動画でもあります。
基礎からGASを学びたいのであれば絶対に外せない1つだと思います。
自身も月2〜3回で開催するセールを活用して90%オフで購入しました。
間違ってもセールをしてないときに購入しないでください(笑)
オススメの本
私自身も購入して今でも読み返している愛読書です。
GASの基礎から丁寧に解説していますので体系的に学びたい方にぴったりだと思います。


以上ごすけでした。