ZeroScript

ゼロからわかるスクリプト

【GAS入門】感覚で分かる!第2回初めての Google Apps Script

f:id:tabemi:20210602125416j:plain

どうも、たべみです。

前回に引き続き、GASの入門コースです。

入門段階では、まずGASを書く上で重要な考え方を頭に入れます。

その考え方とは、以下の3ステップで自動化を行うということでした。

  1. シートの値を取る
  2. 値を編集する
  3. シートに値を戻す

そして今回は、2番目について解説していきます。


前回の記事はコチラ
tabemi.hatenablog.com

1.値を編集するために

では、全体の流れの2番目の「値を編集する」点についてご説明します。


1-2.前提


値を編集するには、プログラミングの知識が必要です!(オオウ)


逆に言えば、値を編集する以外はコピペで行けます。


そしてGASにおいて「値の編集」は2次元配列の操作を意味します。


つまり、GAS入門における必要知識は、「2次元配列の操作」です!

1-3.スプレッドシートにあいうえお表を書く

前回、スプレッドシートになんの数字も文字も入れていなかったので、画像のように「シート1」にあいうえお表を作成してみてください。

全部書くのは大変なので、「な行」までで大丈夫です。

f:id:tabemi:20210602114433p:plain
Googleスプレッドシートにあ~な行を書いた

1-4.2次元配列の操作

では、2次元配列の操作とはどのようなものでしょうか。

前回のソースコードをこのように記述してみてください。

function myFunction() {

  const ss = SpreadsheetApp.getActiveSpreadsheet(); 
  const sheet = ss.getSheets()[0]; 
  const values = sheet.getDataRange().getValues();
 
  console.log(values);
  console.log(values[1][3]); 
  console.log(values[1]); 
  console.log(values[3][4]); 
}

前回までの復習ですが、

values にシートの値がすべて入っています。

ここから新しい知識です。

console.log ( ?? ); でその中身を見ることができます。



console.log(values); はvaluesの中身を見ることができるプログラムとなります



1-5.プログラムを実行する

では、実際に、console.log( ?? ); の中身を見るためコードを実行します
※中身を見るためにはコードを実行する必要があります。


先ほどコードをコピペしたエディタ画面の上部に注目してみましょう。再生ボタンのようなアイコンがあるかと思います。押してみましょう。

f:id:tabemi:20210523162409p:plain
実行ボタンをクリック

すると、、ウィンドウが出てきますね。。

f:id:tabemi:20210523162329p:plain
ウィンドウが出てくる。「権限を確認」をクリック。キャンセルは押しません。

これの処理方法は以下の記事にまとめてあります。とはいっても30秒ほどで完了するので気楽にいきましょう!!
選択肢にはすべてYESを選ぶという気持ちでOKですよ。
tabemi.hatenablog.com


上の承認作業終了後、黄色く「実行完了」が出ていればOKです!

でない!という方、もう一度実行ボタンを押してみましょう。

2.値の様子を見る

これで、コードの実行ができました。

2-1.console.log() の行方

では、「実行完了」のウィンドウをよく見てみましょう。

f:id:tabemi:20210602125901p:plain
ログ


黄色い枠の間に4行あります。
これはソースコードの console.log() の数と同じです!

console.log(); はこのウィンドウに表示されるのです。

そしてウィンドウに表示されたものをログといいます

2-2.ログとプログラムを見比べる

では、1つ目のログに注目してみましょう。

//ちなみに半角スラッシュで、ソースコード上にプログラムに関係のない文字を書くことができます〇

console.log(values);

valuesの中には、シートの値のすべてが入っているのでした。

そして実際に1つ目のログにはシート上の値がすべて表示されています!

確認してみましょう!

f:id:tabemi:20210602114433p:plain
スプレッドシート上の値
f:id:tabemi:20210602125901p:plain
1つ目のログはシートの値のすべてが出力されている


ログ上に括弧が付いていますが、あまり気にせず行きましょう😊


2-3.対応関係を見極める

では、ほかの3つのログはどのように表示されていますか?
values の値の中身と そのほかの console.log(); の中身を見比べてみましょう。

console.log(values);
console.log(values[1][3]); 
console.log(values[1]); 
console.log(values[3][4]); 

//ログの結果
//  2次元配列のvalues の中身
//[ [ 'あ行', 'か行', 'さ行', 'た行', 'な行' ],
//   [ 'あ',    'か',     'さ',     'た',     'な' ],
//   [ 'い',    'き',     'し',     'ち',     'に' ],
//   [ 'う',    'く',     'す',     'つ',     'ぬ' ],
//   [ 'え',    'け',     'せ',     'て',     'ね' ],
//   [ 'お',    'こ',     'そ',     'と',     'の' ] ]

//  values[1][3]
// た

//  values[1]
// [ 'あ', 'か', 'さ', 'た', 'な' ]

//  values[3][4]
// ぬ

法則を見出してみましょう。

values[1][3] は た が出力される。
values[1] は [ 'あ', 'か', 'さ', 'た', 'な' ] が出力される。

values の2行目、4個目は た です。
values の2行目は、あ か さ た な です。

values[3][4] は ぬ が出力される。
さらに、
values の4行目、E列は ぬ です。


値は、
vlues[ valuesの行数+1][ values の列位置+1]
で取り出せるということです。

ゼロから数えて何行目の何列目にあるかを、values[?][?]で表せばよいのです!

さらに「行全体」は values[?] で表すことができます。


文字で書くとややこしいのでビジュアルで理解しましょう。

console.log(values);

//表にすると分かりやすいかもしれません。

//  2次元配列のvalues の中身

//                 0列目,  1列目,  2列目,  3列目,  4列目
// 0行目 [ [ 'あ行',  'か行',  'さ行',  'た行',  'な行' ], 
// 1行目   [ 'あ',     'か',      'さ',      'た',      'な' ],
// 2行目   [ 'い',     'き',      'し',      'ち',      'に' ],
// 3行目   [ 'う',     'く',      'す',      'つ',      'ぬ' ],
// 4行目   [ 'え',     'け',      'せ',      'て',      'ね' ],
// 5行目   [ 'お',     'こ',      'そ',      'と',      'の' ] ]

//0行目の3列目
// values[0][3]

//1行目
// values[1]
values 0列目 1列目 2列目 3列目 4列目
0行目 あ行 か行 さ行 た行 な行
1行目
2行目
3行目
4行目
5行目

3行目の2列目は
values[3][2]
で表される。





2-4.2次元配列の操作とは

それでは、話を2次元配列に戻します。

2次元配列の操作とは、これまで見てきた values[?][?] をもとに理解していきます。

2次元配列である values は、values[?][?]で特定の位置にアクセスができる

これが今回のもっとも重要な点です。


3.まとめ

「シートを編集とは2次元配列 values を操作すること」です。

今回分かったことは、

  • valuesは2次元配列という形で値を持っている
  • console.log(??); で値の中身を見ることができる。
  • values[?][?] で値の特定の場所を意味する
  • 0から数えて何行目の何列目にあるかを、values[?][?]で表せる

つまり2次元配列 values を操作するには values[?][?] を駆使する ということです!

さまざまシートの値を変更・[]の中の数字を変更して、確かめてみてください!



基本的な考え方

  1. シートの値を取る
  2. 値を編集する
  3. シートに値を戻す



同義


  1. シートから2次元配列で値を取得する
  2. 2次元配列を操作する
  3. 2次元配列をシートに戻す

最後に

少し専門的なお話になってきました。

しかし、すべての用語や使い方を覚える必要はないです。「そんなものかー」と悠長に構えることが大事です〇


不明点、相談等あれば、コメントください!!

少しでもお役に立てればと思います。


次回は、実際に2次元配列となったシートの値 values を編集していきます!

ではでは~



GASで自動化します 迅速なレスポンス/GASの業務委託経験あり