この記事を読むことで、GAS(Google Apps Script)で、スプレッドシートの指定の範囲の文字を太字にする処理を学べます。
GASをアニメ、ハンターハンターを通して入門の入門から学べる記事を掲載しております。
GASサンプル集に戻る
メインメニューに戻る
これからプログラミングを始める方へ
基本情報技術者へ
自己紹介
前回(episode4)の復習をします。
IF文とForループを使って、各キャラクターの念がヒソカと同じ「変化系」か、それ以外かで分岐しました。
//アクティブなスプレッドシートを選択するグローバル(共通の処理)
const ss=SpreadsheetApp.getActiveSheet();
//【メンバー】がヒソカと同じ念系統か判定
function Hisoka(){
//行数を取得して、変数Nにメンバーの人数を格納
let N=ss.getLastRow();
//ループを使って各キャラクターの念が「変化系」と等しいか判定して結果入力
for(let i=1;i<=N;i++){
let nen=ss.getRange(i,2).getValue(); //【メンバー】の念を取得
//【メンバー】の念はヒソカと同じ「変化系」か?
if(nen=='変化系'){
ss.getRange(i,3).setValue('ヒソカと一緒');
}else{
ss.getRange(i,3).setValue('XXX'); //違うからこっちに分岐
}
}
}
//ヒソカチェッククリア
function HisoClear(){
//行数を取得して、変数Nに人数を格納
let N=ss.getLastRow();
ss.getRange(1,3,N).clear();
}
このコードでもループを使ったIFによる分岐とその結果の出力は可能なのですが、GASでは、SpreadsheetAppからアクティブシートを辿り、更にセルを辿るとその分処理時間がかかります。
そこで、配列を使って分岐をするコードも作りました。
//アクティブなスプレッドシートを選択するグローバル(共通の処理)
const ss=SpreadsheetApp.getActiveSheet();
//【メンバー】がヒソカと同じ念系統か判定
function Hisoka(){
//行数を取得して、変数Nにメンバーの人数を格納
let N=ss.getLastRow();
//【メンバー】の念を格納する配列を宣言
let array=[];
//変化系と等しいか判定結果を入れる配列
let judge=[];
//念を配列に格納
array=ss.getRange(1,2,N).getValues();
//arrayに念が格納されたことをログに出力して確認
console.log(array);
//ループを使って配列の中身が「変化系」と等しいか調べて判定結果を二次元配列として追加
for(let i=0;i<N;i++){
if(array[i][0]=='変化系'){
judge.push('ヒソカと一緒');
}else{
judge.push('XXX');
}
}
//判定結果が二次元配列として格納されたことをログで確認
console.log(judge);
//配列judgeをスプレッドシートに出力
for(let i=1;i<=N;i++){
ss.getRange(i,3,1).setValue(judge[i-1]);
}
}
//ヒソカチェッククリア
function HisoClear(){
//行数を取得して、変数Nに人数を格納
let N=ss.getLastRow();
ss.getRange(1,3,N).clear();
}
今回は、この表のA列にあるキャラクターの名前のフォントを変えます。
キャラクター名の所を12ptと少し大きいフォントにして、更に太字にして目立たせます。
ハンター試験ルーキーのデータが掲載されている範囲は、セルA1からC4まであります。この範囲が文字で大きさ12ptになります。
キャラクターの人数は、getLastRowで取得します。
const N=ss.getLastRow();
範囲に「cellROOKIE(ルーキー)」と名前を付けて、大きさを変える範囲を確保します。
let cellROOKIE=ss.getRange(1,1,N);
(1,1,N)は、セルA1(1,1)からN行分の範囲という意味です。
これで、キャラクターが増えても対応可能です。
この範囲にフォントの大きさを12ptで太字にする設定を下記のコードに施します。
cellROOKIE.setFontSize(12).setFontWeight(‘bold’);
ここまでのコードです。
//アクティブなスプレッドシートを選択するグローバル(共通の処理)
const ss=SpreadsheetApp.getActiveSheet();
//キャラクターの名前を12ptの太字にする
function Bold12pt(){
const N=ss.getLastRow();
let cellROOKIE=ss.getRange(1,1,N);
cellROOKIE.setFontSize(12).setFontWeight('bold');
}
この様に、キャラクターの名前がフォント12の太字になりました。
7行目の
const N=ss.getLastRow();
で、最終行を取得しているので、キャラクターの名前が増えても対応可能です。
新人潰しのトンパさんからビスケまで、キャラクターを追加しました。
再度実行してみます。
全員の名前が太字になりました。
ご精読ありがとうございました。
GASサンプル集に戻る
メインメニューに戻る
これからプログラミングを始める方へ
基本情報技術者へ
自己紹介
■参考文献の紹介■
初めてGASを学ぶ方向け。
スプレッドシートの基本的な使い方からGASのベースとなるJavaScriptの基礎文法、GASでの初歩的なプログラミングを学べます。
GASに少し慣れて来たら、基礎固めとリファレンスとしてこの本を通してじっくり学べます。