6
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【GAS初心者】getDataRange関数でのシートの値の取り方6step+1try(GAS)

Last updated at Posted at 2020-07-28

一緒に実例を見ながら、
操作方法を学んでいきましょう。

※以下、全てsheetは省略しています。
全てのスクリプトの1行目に以下を記入してください。

 var sheet = SpreadsheetApp.getActiveSheet();

今回使うシート

image.png

まず覚えるもの

スプレッドシート全体を取得

全体の値を取得
sheet.getDataRange().getValues();
//[[1ケタ, 2ケタ, 3ケタ, 4ケタ, 5ケタ], [1.0, 10.0, 100.0, 1000.0, 10000.0], [2.0, 20.0, 200.0, 2000.0, 20000.0], [3.0, 30.0, 300.0, 3000.0, 30000.0], [4.0, 40.0, 400.0, 4000.0, 40000.0], [5.0, 50.0, 500.0, 5000.0, 50000.0], [6.0, 60.0, 600.0, 6000.0, 60000.0], [7.0, 70.0, 700.0, 7000.0, 70000.0], [8.0, 80.0, 800.0, 8000.0, 80000.0], [9.0, 90.0, 900.0, 9000.0, 90000.0], [10.0, 100.0, 1000.0, 10000.0, 100000.0], [11.0, 110.0, 1100.0, 11000.0, 110000.0], [12.0, 120.0, 1200.0, 12000.0, 120000.0], [13.0, 130.0, 1300.0, 13000.0, 130000.0], [14.0, 140.0, 1400.0, 14000.0, 140000.0], [15.0, 150.0, 1500.0, 15000.0, 150000.0], [16.0, 160.0, 1600.0, 16000.0, 160000.0], [17.0, 170.0, 1700.0, 17000.0, 170000.0], [18.0, 180.0, 1800.0, 18000.0, 180000.0], [19.0, 190.0, 1900.0, 19000.0, 190000.0], [20.0, 200.0, 2000.0, 20000.0, 200000.0]]

早速いろんな扱い方に挑戦しよう

##開始セル指定して、指定範囲の値を取得
image.png

例1
  var start_row,start_col //開始行,開始列 --> A1なら(1,1)、A2なら(2,1)
  start_row = 2
  start_col = 1 
  var last_col = sheet.getLastColumn();
  var last_row = sheet.getLastRow();
  var range = sheet.getRange(start_row, start_col, last_row, last_col).getValues();
  Logger.log(range.filter(String));//空白をのぞいて表示
  //[[1.0, 10.0, 100.0, 1000.0], [2.0, 20.0, 200.0, 2000.0], [3.0, 30.0, 300.0, 3000.0], [4.0, 40.0, 400.0, 4000.0], [5.0, 50.0, 500.0, 5000.0], [6.0, 60.0, 600.0, 6000.0], [7.0, 70.0, 700.0, 7000.0], [8.0, 80.0, 800.0, 8000.0], [9.0, 90.0, 900.0, 9000.0], [10.0, 100.0, 1000.0, 10000.0], [11.0, 110.0, 1100.0, 11000.0], [12.0, 120.0, 1200.0, 12000.0], [13.0, 130.0, 1300.0, 13000.0], [14.0, 140.0, 1400.0, 14000.0], [15.0, 150.0, 1500.0, 15000.0], [16.0, 160.0, 1600.0, 16000.0], [17.0, 170.0, 1700.0, 17000.0], [18.0, 180.0, 1800.0, 18000.0], [19.0, 190.0, 1900.0, 19000.0], [20.0, 200.0, 2000.0, 20000.0]]

##1行目のみを取得
image.png

例2
values = sheet.getDataRange().getValues(); //全体
values[0]//[1ケタ, 2ケタ, 3ケタ, 4ケタ, 5ケタ]

##1行目の1列目(A1)を取得
image.png

例3
values = sheet.getDataRange().getValues(); //全体
values[0][0]//「1ケタ」

##行数を調べる & そのまま最終行の値を調べる
image.png

例4
values = sheet.getDataRange().getValues(); //全体
numRow = values.length//	21
values[numRow];//21行目の値が出てくる -->[20.0, 200.0, 2000.0, 20000.0, 200000.0]

##シート全体の「最終行」と「最終列」を取得

例5
sheet.getDataRange().getValues(); //全体
sheet.getLastRow();// 21
sheet.getLastColumn();// 5

##特定列を直接抜き出す
image.png

例6
var Values_E = sheet.getRange('E2:E').getValues();//項目をのぞいたE列の値を全て取得
Values_E.filter(String)//空白をのぞいて表示  -->[[10000.0], [20000.0], [30000.0], [40000.0], [50000.0], [60000.0], [70000.0], [80000.0], [90000.0], [100000.0], [110000.0], [120000.0], [130000.0], [140000.0], [150000.0], [160000.0], [170000.0], [180000.0], [190000.0], [200000.0]]

#Try:値の一致をマークしよう!

上記のコードを用いて、「E列内で特定の値に一致したらF列に記入する」に挑戦してみましょう。

  1. E列の値を取得
  2. 1つずつ値を取り出してみる
  3. 値が一致していたら、同じ行のF列に「OK」と記入する

この段取りでやってみます。

##1. E列の値を取得

image.png

これは例6:特定列を直接抜き出す

で学習しました。

1.E列の値を取得
//現在扱っているシートを取得
var sheet = SpreadsheetApp.getActiveSheet();
//E2以降のE列を取得(空白を処理する)
var Values_E = sheet.getRange('E2:E').getValues().filter(String);
//結果を表示
Logger.log(Values_E);

[[10000.0], [20000.0], [30000.0], [40000.0], [50000.0], [60000.0], [70000.0], [80000.0], [90000.0], [100000.0], [110000.0], [120000.0], [130000.0], [140000.0], [150000.0], [160000.0], [170000.0], [180000.0], [190000.0], [200000.0]]

##2. 1つずつ値を取り出してみる

これは、forというループ処理をします。

2.1つずつ値を取り出してみる

for(var i = 1; i <= Values_E.length; i++) {
  //処理
}

##3. 値が一致していたら、同じ行のF列に「OK」と記入する

この処理の場所で、「値の一致の有無」と「F列への書き込み」を行います。
今回は、40000という値があればF列に「OK」と書き込みます。

3.値が一致していたら、同じ行のF列に「OK」と記入する
if(Math.floor(Values_E[i]) === 40000){ //i個目が一致していたら
    sheet.getRange(i+2, 6).setValue("OK"); //F列=6列目
    Logger.log("書き込みました")

全コードはこちら(まとめてあります)

全コード

function searchword(){

  //ユーザー変更部分------------
  //検索ワード
  var search_word = 40000 
  //書き込むワード
  var input_word = "OK"
  //何列の何行目から検索するか
  var search_col =  "E"
  var search_row =  2
  //何列目に書き込むか
  var input_col =  6 
  
  //以下コード-------------------
  var sheet = SpreadsheetApp.getActiveSheet();  
  var Values_E = sheet.getRange(search_col+String(search_row)+':'+search_col).getValues().filter(String);//項目をのぞいたE列の値を全て取得
  Logger.log(Values_E);
  for(let i = 0; i <= Values_E.length-1; i++) { //1つずつ取り出す
    if(Math.floor(Values_E[i]) === search_word){ //i個目が一致していたら
      sheet.getRange(i+search_row, input_col).setValue(input_word); //F列=6列目
      Logger.log("書き込みました")
    }else{
    Logger.log("除外しました",Math.floor(Values_E[i]))
    }
  }
  Logger.log("終了しました")
}
6
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?