見出し画像

【GAS】Google Apps Script 活用事例 非エンジニアでも、きっと出来る!!for文を克服しよう!!理解するために役立つスクリプト

for文を克服し、仲良くなろう!!

今回は、Google Apps Scriptを使用したスクリプトの中でも、基礎中の基礎、for文の理解に役立つスクリプトを書いてみました。非エンジニアのためのgas入門編です。ギターに例えると、バレーコードのFみたいな一つの壁だと思います。

最初、この呪文のような....i++って何なのよ?って思いませんでしたか?僕は、これを理解出来るまではコピペでやり過ごしていました.....(笑)

ちなみに、i++とは、iが一つずつ増えていくという意味で、i += 1の省略形になります。

1行ずつ着色するスクリプト コピペでもOK

function setColors(){
 const spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
 const sheet       = spreadsheet.getSheetByName('test');
 const values      = sheet.getDataRange().getValues();

 //getRangeで取得しているため、1行塗り潰しが効かないため、lengthに1追加している。
 for (let i = 0; i < values.length + 1; i++){
   if(i > 0){
     sheet.getRange(i, 1, 1, sheet.getLastColumn()).setBackground('#87ceeb');
     console.log('セル範囲 : ' + 'A' + i +':F' + i + 'を#87ceebで塗りつぶしています。');
   }//if
 }//for

 const ui       = SpreadsheetApp.getUi();
 const response = ui.alert(
 'アラートの表示',
 'for文は、↓キーを最終行まで押す事を繰り返すイメージ。デモでは分かりやすくなるようにセルの色を変えています。セルの色を元に戻します。よろしいでしょうか?',
 ui.ButtonSet.YES_NO

 );//alert

 switch (response) {
   case ui.Button.YES:
     sheet.getDataRange().setBackground(null);
     console.log('はいが選択されました。');
     break;
   case ui.Button.No:
     console.log('いいえが選択されました。');
     break;
   }
 }//end

最初は、真似事から入ってみましょう。上記のコードをスプレッドシートのスクリプトエディタに貼り付けてみましょう。

ツール > スクリプトエディタ の順に進みます。

スクリーンショット 2021-03-07 7.55.25

エディタを選択して貼り付け

スクリーンショット 2021-03-07 7.57.28

貼り付け終わったら、シート名を変更します。下記の記述が、スプレッドシート内のtestというシートに対して、処理を実行するという宣言になります。お使いの環境に合わせて、変えてみてください。

const sheet = spreadsheet.getSheetByName('test');

実行中の様子

スクリーンショット 2020-01-12 21.28.33

i++ をイメージしやすくなるように、シートに1行ごとに色を付けていくスクリプトです。キーボードの↓ボタンを1回ずつ押して最終行まで確認していくイメージです。

それが、図のように20行くらいだったら、人力でも出来るかもしれませんが、1,000行、10,000行とかあったら、とてもじゃないけれど、やっていられない....それをプログラムに代行してもらうために唱える呪文というか構文がfor文です。

この繰り返し処理こそが、コンピューターが最も得意とする事であり、プログラミングはその力を引き出すための手段です。for文の習得により、人は本来持っている柔軟な思考とを併せて、やりたい事を実現出来ます!!

console.logの結果

スクリーンショット 2020-01-12 21.53.08

上のスクリプトを実行した時の結果がこうなっています。

具体的な処理の解説

sheet.getRange(i, 1, 1, sheet.getLastColumn()).setBackground('#87ceeb');

i 行目の1列目から、1行、最終列までを範囲として、セルを塗りつぶすという処理です。

console.log('i = ' + i + ' セル範囲 : ' + 'A' + i +':F' + i + 'を#87ceebで塗りつぶしています。');

今回のスクリプトは、シート名を、配列早見表に変えされすれば、コピペでも動きます。ぜひ、やってみてください。

const sheet = spreadsheet.getSheetByName('配列早見表');

for文で連番を振るスクリプト書いてみました。

スクリーンショット 2021-03-06 23.18.38

function generateRowNumber() {
 const spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
 const sheet       = spreadsheet.getSheetByName('test');
 let newValues     = [];

 //1から1000までの連番を作成
 //見出し行を除いてスタート
 for(let i = 1; i < 1001; i++){
   newValues.push([i]);
 };

 console.log(newValues);
 
 //水平垂直に揃える
 sheet.getRange(2, 1, newValues.length, newValues[0].length)
 .setValues(newValues)
 .setHorizontalAlignment('center')
 .setVerticalAlignment('middle');
 
}//end

1から1000までの連番を振るスクリプトを書いてみました。

2次元配列で、このブログ見やすいよ!!と教えてもらいました。


この記事が気に入ったらサポートをしてみませんか?