当ラボのツールは、GoogleスプレッドシートやExcelで作成されているため、利用者がご自身で機能を追加することも可能です。
前回は、ワンボタンで最終行にデータを追加するスクリプト(GAS:Google Apps Script)を考えました。
”http://e-shikumi-labo.com/23012019/2448.html”今回は、ワンボタンでデータベースシートの所定の行のデータを所定の位置に貼り付けるスクリプトを考えてみます。
スクリプト全体の流れ

(1)貼り付け場所の整理
前回と同じく、どのデータをどこに貼り付けるかを整理します。
・張り付け元:列は固定、行は変化(シート名+列名)
・張り付け先:セル固定(シート名+セル名)
(2)スクリプト作成
今回作成するスクリプトは、
・貼り付けるデータベースの行を手入力
・指定したアドレスにデータを貼り付け
の2ステップです。
(3)実行ボタンの設置
前回と同じく、実行しやすいように、スプレッドシート上に「実行」ボタンを設置します。
作成手順
では、実際に作成していきましょう。スプレッドシートにスクリプトを記載していきます。
(1)貼り付け位置の整理
どのデータをどのどのセルに貼り付けるかを整理します。貼り付け元・貼り付け先は、スプレッドシート名とセルアドレスを使って指定します。
前回は
(行,列)(例:セル(2,2)→(2行目,2列目))
を使いましたが、今回は、
(アルファベット列番号+行番号)(例:セル(“B2”)→B列の2行目)
使って指定してみました。
どちらでも良いです。
| 項目 | 貼り付け元 | 貼り付け先 |
| 仕入元URL | 「データベース」シート セル(指定行,3) | 「計算」シート セル(D2) |
| 参考URL | 「データベース」シート セル(指定行,4) | 「計算」シート セル(D3) |
(2)スクリプト作成
スクリプトエディタを開き、以下コードを記入します。
function cpaste() {
//計算シートとデータベースシートを設定
var calcsheet = SpreadsheetApp.getActive().getSheetByName("計算");
var dbsheet = SpreadsheetApp.getActive().getSheetByName("データベース");
//データベースシートの最終行を取得
var dbrow=Browser.inputBox('貼り付けの行番号を入力して下さい');
//データベースシートの最終行に各データを貼り付け
calcsheet.getRange("D2").setValue(dbsheet.getRange(dbrow,3).getValue())
calcsheet.getRange("D3").setValue(dbsheet.getRange(dbrow,4).getValue())
}
ポイントは、「inputbox」という関数です。このスクリプトを実行すると、このように入力画面が出てきます。

ここで入力した値を行番号として、その後の処理を行っています。
あとは、前回と同じように貼り付けているだけです。
(3)実行ボタンの設置
前回と同じく、実行しやすいように、スプレッドシート上に「実行」ボタンを設置します。
最後に
こちらも、コメント付きでわずか10行のスクリプトを書くだけで、転記ボタンを作成することができました。
行の指定方法として、
・選択されているセルを含む行
・データベースの上から順番に処理
などとすると、手入力不要でワンボタンで値を入力することができます。
また、同時にデータベースシートに貼り付け完了の文字やチェックを入力することで、重複の入力を避けることができます。
いろいろチャレンジしてみて下さい。
