2020年11月30日月曜日

Spreadsheetにて正規表現にマッチした値を取り出す。

例えば、Google spread sheetで数字の部分だけを取り出したいとかいうニーズがあったりします。

そんな時に利用できるのが、REGEXTRACT関数です。

正規表現を使って文字列を抽出することができます。

例えば、「10円」というセルから10を取り出そうと思うと、

=REGEXEXTRACT(A2,"[0-9]+")

と記述することにより、10の部分を取り出すことができます。


他の例だと、例えば、メールのアドレス部分が、

サンプル太郎 <spreadsheet@example.com>」のような形式で入っていた場合。

下記のように記述すると、名前の部分が取り出せます。

=REGEXEXTRACT(E2,"(.+)<")

また、下のように書くとメールアドレスの部分を取り出せますね。

=REGEXEXTRACT(E2,"<(.+)>")


このように、文字列を自由自在に分解できると、また、spreadsheetの活用範囲が広がるのではないでしょうか。 

本日の関数の実サンプルはこちらのリンクを参照ください。

2020年11月27日金曜日

Google Spread Sheetですべての値の一覧化をしたいときに使う関数(UNIQUE)

ある列に入っている値の一覧を取得したいと思うことがあると思います。

そんな時に使う関数が、UNIQUE関数です。

利用方法は簡単です。A列に入っている値の一覧が取得したいときには、下記のように記述します。

=UNIQUE(A2:A10)

 このように書くと、ここから下に、一意な値が並びます。

それをさらに並べ替えたい場合には、SORT関数を使います。

=SORT(UNIQUE(C2:C10))

これで、一覧を作成したうえで並び替えることができます。

実際のSpreadsheetのサンプルのURLはこちら


2020年11月5日木曜日

Google spreadsheetを使って自動応答メールの作成

 Google Apps scriptを使ってSpreadSheetを開いたらメールを送る例は、前回の記事でも紹介しました。

似たようなユースケースですが、今回は、フォームを使って自動送信メールを実現する方法を紹介します。メール送信プログラムは前回の記事で紹介したので本日は割愛します。

また、フォームの作成は、以前の記事で紹介しているのでこれも割愛します。

メールのプログラムを書いた後に、スクリプトエディタ上の「編集」→「現在のプロジェクトのトリガー」より、トリガを作成のボタンを押していただき、イベントの種類を選択から「フォーム送信時」を選ぶとフォームを提出したときに自動的にメールを送信することができます。


前回の記事のあて先部分を下記のようにすると、提出者に対してメールを送信することができますね。

    var toAdr = Session.getActiveUser().getEmail() ;


これを使うと例えば下記のようなことが実現できます。

  • フォーム回答時にお礼のメールを送信する
  • 下記の内容で受け付けました的なお知らせメール
  • 申込者に対して秘密のURLなどを送付する。アンケート回答のお礼のクーポンとかもそのたぐいですね。
便利ですね。日々の仕事とかちょっとした部分に色々使えそうです。

コメント欄に、こういう使い方がしてみたとか、こういう使い方ってできるかなどの質問なども気軽にいただけるとありがたいです。

2020年11月4日水曜日

Google App Script でメールを送信する

 例えば、下記のようなことをしたくないでしょうか。

例えば、鍵が開錠されたら通知をしたいけど、鍵は、単なる物理鍵なので、通知は難しい。


そんな時に、下記のような構成にすることによって、疑似的に実現可能かなと思っています。

・暗証番号などのカギをGoogle spreadsheetに書いておく。

・Google spreadsheetが開かれたら、誰が開いたかを管理者にメールする

このようなことが、Google spreadsheetとGoogle apps scriptを使うと簡単にできます。

暗証番号型のカギで鍵をかけてその暗証番号などの秘密のファイルをどこかにおいておき、

そのファイルが開封されたら、通知してほしい。

まず、Google spreadsheetから「ツール」→「スクリプトエディタ」を開きます。

その後下記のようなコードを書きます。

<pre>

function send_mail(){

    var toAdr = "xxxxxxx9999@gmail.com";

    var ccAdr = "";

    var bccAdr = "";

    var subject = "";

    var name = "";

    var files = new Array();

    var body = Session.getActiveUser().getEmail() +

      "さんから訪問がありました。\n";

  

    MailApp.sendEmail({to:toAdr, cc:ccAdr, bcc:bccAdr, subject:subject, name:name, body:body, attachments:files});

}

</pre>

Session.getActiveUser().getEmail() は接続者のメールアドレス情報を取得します。

MailApp.sendEmailはメールの送信をする関数です。


toAdrに送信したいあtメールアドレスをいれてください。

その後、スクリプトエディタ上で、実行→関数を実行→send_mailを選択すると許可を求める画面が出てきます。今ログインしているユーザの代わりにメールを送信する許可を求められるので、問題がなければ許可をします。

すると、メールが送信されると思います。

次に、スクリプトエディタ上の「編集」→「現在のプロジェクトのトリガー」を選択すると、この関数をいつ発火するかを選択できます。「トリガーを追加」を押して起動時に発火するように下記の通り、選択します。

イベントの種類を「起動時」とすることでファイルを開いたときにメール送信関数を呼び出すようにすることができます。

以上のステップのみで、冒頭に述べたことが実現できます。

とても簡単ですね。。。