第18回.組み込み関数を使う
プログラミング言語は多数ありますが、制御文や演算子は極端な違いはなく、
読むだけなら、それほど時間のかかかるものではありません。
※もちろん、奥深い部分の理解が相当に大変なことは、どの言語でも同じことです。
組み込み関数をしっかりと覚える事です。
出来もしないことを延々調べてみたり、組み込み関数があるのに力技で同じことを書いてみたり・・・
まあ、このような経験自体は無駄になるものではありませんが、
そうそう、そんなことをしている訳にもいきませんし、そんな時間の余裕もないでしょう。
ゆうに100以上ありますので、全部をそうそう覚えられるものでもありません。
ひととおり、どんな関数があるかは見ておけば、必要になった時に思い出せるでしょう。
そして、半数ないし三分の一くらいの関数は、実際に書いて動作を確認しておくようにして下さい。
組み込み関数の一覧は、以下のリファレンスを参照してください。
数と日付 ・・・ 一般には組み込み関数、VBAではVBA関数に相当します。
・Number
・Math
・Date
テキスト処理 ・・・ 一般には組み込み関数、VBAではVBA関数に相当します。
・String
・RegExp
ここでは、例題をもとに、簡単に使い方を解説します。
小数を整数に、切り上げ・切捨て・四捨五入
切捨てMath.floor(x))
四捨五入:Math.round(x))
Browser.msgBox(Math.ceil(num))
Browser.msgBox(Math.floor(num))
Browser.msgBox(Math.round(num))
234
235
この順に表示されます。
日付を作成
Dateをコンストラクタとして呼び出すことによってのみインスタンス化できます。
と書かれています。
つまりは、new(コンストラクタ)でインスタンスを生成して使うという事です。
※コンストラクタやインスタンスといった用語を直ぐには理解しなくても構いまん。
まずは使えるようになることを、ここでは優先します。
指定の日付:new Date("2016/10/10")
Browser.msgBox(new Date("2016/10/10"))
Mon Oct 10 2016 00:00:00 GMT+0900 (JST)
この順に表示されます。
日付から、年・月・日を取り出す
月:getMonth()+1) ・・・ getMonthの戻り値は、0~11になります。
日:getDate())
Browser.msgBox(date.getFullYear())
Browser.msgBox(date.getMonth()+1)
Browser.msgBox(date.getDate())
10
15
この順に表示されます。
日数後・月数後・年数後を求める
これはExcelも同じです。1日を1として加減算できます。
しかし、Google Apps Scriptでは、そう言う訳にはいきません。
月数後:setMonth(date.getMonth() + 月数後の数値)
年数後:setFullYear(date.getFullYear() + 年数後の数値)
※数値は、正なら後の日付、負なら前の日付になります。
date.setDate(date.getDate() + 3)
Browser.msgBox(date.getFullYear()+"/"+(date.getMonth()+1)+"/"+date.getDate())
date.setMonth(date.getMonth() + 1)
Browser.msgBox(date.getFullYear()+"/"+(date.getMonth()+1)+"/"+date.getDate())
date.setFullYear(date.getFullYear() + 1)
Browser.msgBox(date.getFullYear()+"/"+(date.getMonth()+1)+"/"+date.getDate())
2016/11/18
2017/11/18
この順に表示されます。
このあたりが、結果を変数に代入しないの???
といった疑問が出るかもしれません。
Dateオブジェクトのメソッドを実行して、Dateオブジェクトが持つ値を変更しているのです。
VBAのRangeオブジェクトのメソッドと同じようなものだと考えて下さい。
大文字小文字の変換
小文字変換:toLowerCase()
Browser.msgBox(str.toUpperCase())
Browser.msgBox(str.toLowerCase())
google apps script
この順に表示されます。
文字コードをシフトさせるようなスクリプトを書く必要があります。
このあたりは、今後、応用編にて掲載していきます。
文字列を置換する
replacement:第一引数でマッチした箇所を置き換える文字列
flags:この引数を利用する代わりに、patternにフラグを伴ったRegExpオブジェクトを利用する方法が一般的です。
i :大文字と小文字の違いを無視する
m :複数行を越えたマッチ
Browser.msgBox(str.replace("Aps","Apps"))
と表示されます。
そこで、全てを置換する場合は、flagsを指定するかRegExpオブジェクトを利用します。
文字列から一部を取り出す
先頭が0から始まります。
lengthを省略すると、文字列の最後までが返されます。
先頭が0から始まります。
indexEndを省略すると、文字列の最後までが返されます。
Browser.msgBox(str.substr(7, 4))
Browser.msgBox(str.substring(7, 12))
Apps
この順に表示されます。
組み込み関数を使う事自体は、そんなに難しいものではありません。
しかし、ある課題に直面した時、
組み込み関数をどのように組み合わせれば実現できるか・・・
これは、パズルを解くようなもので、いかに知っている知識を総動員するかになります。
文字列系の練習問題
A | B | C | |
1 | お題 | 元データ | 結果 |
2 | 括弧()内の文字のみ取り出す | Google Apps Script(GAS)入門 | GAS |
3 | 最後の半角空白以降を取り出す | Google Apps Script | Script |
4 | ピリオド(.)の数を数える | 192.168.101.255 | 3 |
練習問題の回答
function sample18() {
var ash = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ash.getActiveSheet();
var str;
//括弧()内の文字のみ取り出す
str = sheet.getRange(2, 2).getValue();
str = str.substring(str.indexOf("(")+1,str.indexOf(")"));
sheet.getRange(2, 3).setValue(str);
//最後の半角空白以降を取り出す
str = sheet.getRange(3, 2).getValue();
str = str.substr(str.lastIndexOf(" ")+1);
sheet.getRange(3, 3).setValue(str);
//ピリオド(.)の数を数える
str = sheet.getRange(4, 2).getValue();
var cnt = str.length - str.replace(".","","g").length;
/* または、
var cnt = str.length - str.replace(/\./g,"").length;
*/
sheet.getRange(4, 3).setValue(cnt);
}
ここは、特に解説しません。
自力で読み解く練習をしてください。
replace(/\./g,"")は、正規表現を使っていますので、引数をクォーテーションで囲みません。
RegExpオブジェクトや正規表現については、いずれ応用編に掲載します。
組み込み関数の最後に
その過程で、その言語のほぼすべてを学習することになってしまいます。
コンストラクタ、インスタンス、RegExpオブジェクト
といったものが出てきています。
必要に応じて、一つずつ、使える関数を増やしていきましょう。
同じテーマ「Google Apps Script入門」の記事
第15回.複数のスプレッドシートを扱う
第16回.Google Apps Scriptの文法
第17回.JavaScript リファレンス
第18回.組み込み関数を使う
第19回.いろいろな繰り返し処理
第20回.エラー処理(try・・・catch)
第21回.配列って何なんだ?
第22回.オブジェクト、メソッド、プロパティとは
第23回.行・列を操作する(挿入・削除・非表示・サイズ)
第24回.シートの挿入・削除・名前変更
第25回.スプレッドシート(ブック)の作成・名前変更
新着記事NEW ・・・新着記事一覧を見る
TRIMRANGE関数(セル範囲をトリム:端の空白セルを除外)|エクセル入門(2024-08-30)
正規表現関数(REGEXTEST,REGEXREPLACE,REGEXEXTRACT)|エクセル入門(2024-07-02)
エクセルが起動しない、Excelが立ち上がらない|エクセル雑感(2024-04-11)
ブール型(Boolean)のis変数・フラグについて|VBA技術解説(2024-04-05)
テキストの内容によって図形を削除する|VBA技術解説(2024-04-02)
ExcelマクロVBA入門目次|エクセルの神髄(2024-03-20)
VBA10大躓きポイント(初心者が躓きやすいポイント)|VBA技術解説(2024-03-05)
テンキーのスクリーンキーボード作成|ユーザーフォーム入門(2024-02-26)
無効な前方参照か、コンパイルされていない種類への参照です。|エクセル雑感(2024-02-17)
初級脱出10問パック|VBA練習問題(2024-01-24)
アクセスランキング ・・・ ランキング一覧を見る
1.最終行の取得(End,Rows.Count)|VBA入門
2.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
3.変数宣言のDimとデータ型|VBA入門
4.繰り返し処理(For Next)|VBA入門
5.RangeとCellsの使い方|VBA入門
6.ブックを閉じる・保存(Close,Save,SaveAs)|VBA入門
7.セルのクリア(Clear,ClearContents)|VBA入門
8.メッセージボックス(MsgBox関数)|VBA入門
9.条件分岐(Select Case)|VBA入門
10.ブック・シートの選択(Select,Activate)|VBA入門
- ホーム
- その他
- Google Apps Script入門
- 組み込み関数を使う
このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。