見出し画像

【最初の最初】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」ですね。

使い慣れたスプレッドシートなので、スクリプトの結果がイメージどおりになるか確認しやすいのではないでしょうか?
スクリプトは魔法ではないので、イメージできた通りにしか作動しません。

セルの値やセルの範囲を変えてみて、イメージどおりになるか試してみてください。

どんな記事ならサポートしてみようと思えるか、ご要望ありましたら教えてくださいね。