Googleスプレッドシート:ワンボタンでDBのデータを所定位置に貼り付ける
当ラボのツールは、GoogleスプレッドシートやExcelで作成されているため、利用者がご自身で機能を追加することも可能です。
前回は、ワンボタンで最終行にデータを追加するスクリプト(GAS:Google Apps Script)を考えました。
今回は、ワンボタンでデータベースシートの所定の行のデータを所定の位置に貼り付けるスクリプトを考えてみます。
スクリプト全体の流れ
(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行のスクリプトを書くだけで、転記ボタンを作成することができました。
行の指定方法として、
・選択されているセルを含む行
・データベースの上から順番に処理
などとすると、手入力不要でワンボタンで値を入力することができます。
また、同時にデータベースシートに貼り付け完了の文字やチェックを入力することで、重複の入力を避けることができます。
いろいろチャレンジしてみて下さい。