見出し画像

スプレッドシートからメール下書き作成(その2)[GAS]GASを分解する

前回、Google Apps Script(GAS)を用いGoogleスプレッドシートからメール下書きを作成するという記事を書きました。

スクリプトはこちら。
大きく表示したいので画像にしました。

メール下書き

いまでこそ「こんな短いプログラムで、スプレッドシートからメール下書きを作成できるなんてGASはなんと便利なことか」とつくづく思いますが、プログラミングを学ぶ以前は、

「なんだこの呪文は...」

とたじろいだものです。

とはいえ「呪文」とはよく言ったもので、使いかたさえ覚えればとても大きな武器になります。
ぜひたじろぐことなく、GAS習得の第一歩を踏み出して頂きたいと思いながら本記事を書いています。


GASを分解してみる

前掲の6行のサンプルプログラムを分解し整理してみます。
(※以降に記述する内容・解釈は個人の見解が含まれておりますのでその旨ご理解ください)、

【1】重複を除いて単語の種類を数えてみる

なにやら不可解な単語が羅列されておりとっつきにくいこのプログラムですが、よく観察するといくつかの単語(とここではと呼ぶことにします)が重複しています。
重複した単語を薄いグレーにしてみると、覚えるべき単語が減り少しスッキリしました。
単語数を数えると「14」個です。

重複を薄グレーにすると少しスッキリ

【2】単語を分類してみる

14個の単語を、私なりの見解で3つの分類に分けてみます。

◆分類-1 = 覚えなくてよいもの
◆分類-2 = よく使うので覚えようとしなくても自然に覚えられるもの
◆分類-3 = もし覚えられなくてもその都度調べれば何とかなるもの

3つに分類

【2_1】分類-1 = 覚えなくてよいもの

プログラミングのなかに「覚えなくてよいもの」がある、というのは少々意外と思われるかもしれませんが、あるんです。
なぜ「覚えなくてよい」のかと言うと、「プログラミングの書き手が自由に命名していいもの」だからです。

「覚えなくてよいもの」の代表的なものとして、「関数名」「定数名」「変数名」などがあります。

このサンプルプログラムで言うと、「createDraftMail」は「関数名」にあたります。

GASに於いて「関数」とは、プログラミングの手続きのひと固まりを指します。
「関数」には「関数名」をつける必要があり、たいていは「そのプログラミング手続きがどのような働きを持つか」がわかるような単語で命名します。
このサンプルプログラムでは「メール下書きを作成する」という働きを持つので「createDraftMail」と名付けました。

また、「sheet」「recipient」「subject」「body」は「定数名」です。
「定数」は、文字列や数値などを格納する「箱」のようなものです。

中学生のころに数学の授業で下記のようなことを習ったと思います。

【問】
x = 4 , y = 5
のとき、zの値を求めよ。
x + y = z
(答 : 9)

この場合、xやyは「箱」のようなもので、それぞれ4,5という数値が代入されます。
このサンプルプログラムでは、下記の定数がそれぞれの役割を担っています。

定数「sheet」 = 指定されたスプレッドシートファイルのうち、操作するシートを指定する
定数「recipient」 = メールの宛先(メアド)を格納する
定数「subject」 = メールの件名を格納する
定数「body」 = メールの本文を格納する

「定数名」も「関数名」同様、それぞれの役割がわかるような単語で命名します。
慣れないうちは「recipient」「subject」「body」をそれぞれ「atesaki」「kenmei」「honbun」とローマ字表記にしても良いでしょう。それでもプログラムは実行できます。

【2_2】分類-2 = よく使うので覚えようとしなくても自然に覚えられるもの

このサンプルプログラムで用いられている「function」「const」「getRange」「getValue」の4つの単語はこのカテゴリに分類しました。
(※重ね重ね申し上げますがあくまで個人の見解です)

function」は、関数全体の先頭に必ず付けるものです。
「こういうもの」としてそのうち自然に覚えられると思います。

const」は、「定数名」の前に必ず付けるものです。
「これを定数として使いますよ!」と宣言するものです。
これも多用するので自然に覚えられます。

「getRange」「getValue」は、GASでスプレッドシートを操作する場合とても多用します。

getRange」は、なんとなく「範囲をゲットする」と読み取れるでしょう。
その通り「取得したいセル」を指定する際に用いる単語です。
定数「recipient」にはセルB1にある「aaa@example.com」というメアドを代入したいので、「getRange(1, 2)」と書きました。
括弧内の「1, 2」は「セルの1行目,2列目」という意味です。すなわちセルB1を指します。

getValue」は、「値をゲットする」と読み取れるでしょう。
直前に指定したセルの内容を取得する際に用いる単語です。
定数「recipient」に「aaa@example.com」というメアドを代入したい場合、「getRange」でセルB1を指定するだけではなく、「getValue」で「値を取得する」ことも忘れないようにしましょう。

セルの位置関係を確認するために前回記事より再掲

【2_3】分類-3 = もし覚えられなくてもその都度調べれば何とかなるもの

最後のカテゴリは多少乱暴な分け方になりましたが、「分類-1」「分類-2」にも当てはまらないもの…と理解して頂ければよいと思います。

ここでは詳しい解説を省くことにさせて頂きます。
GASの便利さを感じて頂けたら、ぜひ自力で調べて習得してみてください!

前半の3つの単語を一続きにした、「SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();」は常套句のようなもので、
「このアクティブなスプレッドシートのなかで、アクティブなシートを取得する」という呪文です。
スプレッドシートには複数のシートがあることが多いですが、その中でも「アクティブなシート」を取得することで、その中にあるセルを指定し内容(この場合はメアド、メール件名、メール本文)を取得することができます。

後半の2つの単語を一続きにした、
GmailApp.createDraft」も常套句です。
「メールの下書きを作成する」という命令を実行してくれます。
「GmailApp.createDraft」の後には括弧をつけて、「宛先、件名、本文」を指定します。


まとめ

今回のサンプルプログラムでは、6行のGASでメールの下書きを作成するツールができました。
プログラムのなかには14個の「呪文」のような単語があり、
そのうち5つは「覚えなくてよいもの」、4つは「よく使うので覚えようとしなくても自然に覚えられるもの」でした。

最初はとっつきにくいと思いますが、少しずつ学べばきっと便利なツールが作成できます。
GAS、とてもおススメです。


いいなと思ったら応援しよう!