【最初の最初】getRange、getValue,setValue【Googleスプレッドシート】【GAS】
GASはここから始めよう
hello!world を表示しても楽しくない
GASを調べてみようかなと思ったときに、すごい基礎からはじまったり、プログラムのような、「クラス」とか「メソッド」から学ばないといけなくて、挫折する人が多いと思います。
結局、スプレッドシートを動かしたいのですから、まずは動かしましょうよ!
こちら完成形です。よろしければコピーしてお手元にどうぞ。
あるセルの値を別のセルに反映させる。
① セル「B4」の値を取得して、その値を、セル「F4」に入力する。
② セル「B7」の値を取得して、その値に5を足して、セル「F7」に入力する。というスクリプトです。
「B4」セルには 15 を、「B7」セルには、 11 を初期では入れています。
バッグったときはここを確認!!
・ getValue とgetValues、setValue とsetValues は違います!
・ getValue、setValueは動きますが、getvalue、setvalue は動きません!
・ カッコ ( ) を忘れないでください!
getActiveSpreadsheet()t、getActiveSheet()、getValue()
それでは、スクリプトの説明です。
あまり動きはないですけど、「関数でもできることを、スクリプトで再現できる」ことを確認しながら体感してください。
①セル「B4」の値を取得して、その値を、セル「F4」に入力する。
function myFunction() {
var sheet =SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var cell1 = sheet.getRange(4,2,1,1);
var cell2 = sheet.getRange(4,6,1,1);
var value = cell1.getValue();
cell2.setValue(value);
}
var sheet =SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
シートの特定です。世の中たくさんあるシートの中から、今動かしているシートを特定するという呪文です。いったん、こういうものだと理解してください。
var cell1 = sheet.getRange(4,2,1,1);
指定したシートの、「B4というセル」の場所を指定する という意味合いです。「cell1」 という変数は、「値」ではなく「場所」を指定しています。変数というものはおいおい説明します。
getRange(x,x,x,x)の構成を理解しましょう。
「B4」のセルを指定
getRange( 4 、2 、1 、1 )
・下(行)4番目
・右(列)2番目 のセル
・そこから下に1の範囲
・そこから右に1の範囲
var cell2 = sheet.getRange(4,6,1,1);
「B4」は(4,2,1,1)、同じように「F4」は(4,6,1,1)
var value = cell1.getValue();
ようやくここで「値」です。
var cell1 = sheet.getRange(4,2,1,1); で指定したセルの値を「value」という変数を使っています。
「値」が決まったので、
cell2.setValue(value); の式で「F4」に貼り付けます。
この式には 「var」 がついてません。変数ではなく、実行式だということです。
②セル「B7」の値を取得して、その値に5を足して、セル「F7」に入力する。
function myFunction2() {
var sheet =SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var cell1 = sheet.getRange(7,2,1,1);
var cell2 = sheet.getRange(7,6,1,1);
var value = cell1.getValue();
var value2 = value + 5 ;
cell2.setValue(value2);
}
先ほどとほとんど同じです。
(7,2,1,1) ⇒ 「B7」
(7,6,1,1) ⇒ 「F7」
var value2 = value + 5 ;
まったく同じでは面白くないので、取得した値に「5」を足してみました。
cell2.setValue(value2); ←「value」ではなく「value2」ですね。
使い慣れたスプレッドシートなので、スクリプトの結果がイメージどおりになるか確認しやすいのではないでしょうか?
スクリプトは魔法ではないので、イメージできた通りにしか作動しません。
セルの値やセルの範囲を変えてみて、イメージどおりになるか試してみてください。