【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
最初は、真似事から入ってみましょう。上記のコードをスプレッドシートのスクリプトエディタに貼り付けてみましょう。
ツール > スクリプトエディタ の順に進みます。
エディタを選択して貼り付け
貼り付け終わったら、シート名を変更します。下記の記述が、スプレッドシート内のtestというシートに対して、処理を実行するという宣言になります。お使いの環境に合わせて、変えてみてください。
const sheet = spreadsheet.getSheetByName('test');
実行中の様子
i++ をイメージしやすくなるように、シートに1行ごとに色を付けていくスクリプトです。キーボードの↓ボタンを1回ずつ押して最終行まで確認していくイメージです。
それが、図のように20行くらいだったら、人力でも出来るかもしれませんが、1,000行、10,000行とかあったら、とてもじゃないけれど、やっていられない....それをプログラムに代行してもらうために唱える呪文というか構文がfor文です。
この繰り返し処理こそが、コンピューターが最も得意とする事であり、プログラミングはその力を引き出すための手段です。for文の習得により、人は本来持っている柔軟な思考とを併せて、やりたい事を実現出来ます!!
console.logの結果
上のスクリプトを実行した時の結果がこうなっています。
具体的な処理の解説
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文で連番を振るスクリプト書いてみました。
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次元配列で、このブログ見やすいよ!!と教えてもらいました。
この記事が気に入ったらサポートをしてみませんか?