google apps script メール送信の動作確認
#16 動作確認をしてみよう
http://dotinstall.com/lessons/basic_google_apps_script/24316
を元に
動作確認をする
まず、Google ドキュメントで作成したフォーム
MyForm を開く
そして、
View live form
でテスト
名前
メールアドレス
参加、不参加を入力し送信
すると、
スプレッドシートへ送信内容が自動入力される
また、送信したメールアドレスに
今回の投稿内容がメールで受信できていることが確認できる
カテゴリー: Google Apps Script
google apps script で投稿内容をメール送信
google apps script で投稿内容をメール送信
#15 投稿内容をメールしてみよう
http://dotinstall.com/lessons/basic_google_apps_script/24315
を参考に
フォームから投稿された内容を
メール送信するための処理を実装
今回は、発生したイベントを利用するので
function sendReports(e){
}
として、処理を書いていく
まずは、結果を初期化
var rs =”;
Google apps script で
投稿結果から値を取得するには
フォームの項目の名前を入れる
var name = e.nameValues[‘お名前’];
var email = e.nameValues[‘メールアドレス’];
var attend = e.nameValues[‘参加?’];
とする
もし、確認したいのなら
一度 Google ドキュメントで作成したフォームの
項目を確認すること
rs =”name : “+ name +”\n email :”+email +”\n attend : “+attend;
というように、メールで受け取ったときに
見やすいように
\n をいれて改行しておく
これで 変数 rs へ結果が格納されたので
あとはメールで送信する
メールで送信するには
MailApp.sendEmail() を使う
引数には
送信先メールアドレス
件名
内容
となるので
MailApp.sendEmail(
“メールアドレス”,
“回答がありました”,
rs);
というようになる
あとは、トリガー設定をするため
Resources > Current Projects triggers
で
No triggers set up. Click here to add one now.
をクリック
動作を
On open から
On form submit へ変更し
保存
Authorization required
This app needs authorization to run.
Authorize Cancel
というように承認するか聞かれるので
承認する Authorize をクリック
今回要求されている承認は
Send email as you
ユーザ本人に変わってメール送信
View and manage your spreadsheets in Google Drive
Google Drive のスプレッドシート表示と管理
となる
google ドキュメントでフォーム作成
google ドキュメントでフォーム作成
#14 フォームを作ってみよう
http://dotinstall.com/lessons/basic_google_apps_script/24314
を参考に
google ドキュメントでフォームを作成
まず、Google ドライブで
CREATE > Form で新しいフォームを作成
今回はセミナー参加フォームのようなものを作成
Title には MyForm として
テンプレはそのままデフォルトのを使うのでOKをクリック
フォーム画面がでてくるので
MyForm を質問フォームへ変更
質問のタイトルになる
Question Title には
お名前
として
質問形式を設定する Question Type を
Muliple choice から テキスト形式の Textへ変更
必須の質問にしたいので
Required question にチェックをいれる
ここまでできたら、Done をクリック
Done は完了という意味
そして、名前だけでは足りないので
項目を追加するため
Add item をクリックして項目を追加する
Qestion Title に
メールアドレスと入力し
これも必須入力事項なのでRequired question にチェックをいれて
Done をクリック
これで、メールアドレス入力欄が追加される
次に参加するか否かのラジオボタンを作成
Add item をクリックして
ラジオボタンになる
Muliple choice を選択
Question Title には 参加? として
Question Type
の
Option 1 を参加にして
項目を追加するので
Check to add option と薄く表示されている欄をクリックして
不参加と入力し
ラジオボタン項目を追加する
これも、必須質問事項にしたいので
Required question にチェックをいれてDone をクリック
これで、フォームができるので
次に回答先のフォームを選択する
この場合
Choose response destination
をクリック
意味は
回答先を選択する
回答先は新しいスプレッドシートにするので
New spreadsheet
を選択して Create をおす
これで、一度 Google Drive に戻ると
MyForm(Response)
という新しいものが追加されている
この
MyForm(Response) をクリックして開き
これにスクリプトを仕組み、
回答があったときにメールで詳細を飛ばすようにする
Tools > script editor で
スクリプトエディタを立ち上げ
Brank Project をクリックし
スクリプトを書いていく
このままだとわかりにくいので
Untitled project から
MyProject
Code.js から Myscript.js に名前を変更しておく
google apps script でトリガー設定
google apps script でトリガー設定
#13 トリガーを設定してみよう
http://dotinstall.com/lessons/basic_google_apps_script/24313
を参考に
トリガーを設定して任意のタイミングで関数を実行する
作成した関数を定期的に実行するには
時計のようなアイコンをクリックするか
Resources > current projects triggers
でトリガー設定画面をだす
画面がでたら
add a new trigger をクリックし
新しいトリガーを作成
Run には実行する関数、今回は
sendReport を選択
Events には実行するタイミングの設定
デフォルト設定は
From spreadsheet スプレッドシートなので
時間主導型の
Time-driven にする
すると
指定する時間などの設定がでてくるので
Day timer 日ごと を設定
次に、どの時間枠に実行するか設定
7am to 8am
なら午前7時から午前8時になるので
これを設定
設定ができたら、Save をクリック
これで、トリガー設定により
自動的に行うシステムができる
自作の関数で定期的に処理したり
可能ならAPIなどもつかって処理するとかなり楽になる
google apps script でメール送信
google apps script でメール送信
#12 MailAppを使ってみよう
http://dotinstall.com/lessons/basic_google_apps_script/24312
を参考に
スプレッドシートのデータを元に
MailApp を使いメール送信する
今回は
毎朝合格者を確認し、合格者をカウントしてメール送信するようにする
今回の関数は sendReport()
まず、シートを取得するので
var sheet = SpreadSheetApp.getActiveSheet();
次に合格者の数をカウントし管理する
var n=0;
for(var i=0;i<=sheet.getLastRow(); i++){
でループ
i<=sheet.getLastRow() は
最終行までという意味
次に、点数が70以上ならカウントするので
if(sheet.getRange(i,2).getValue() >= 70)
{n++;}
.getRange(i,2) はB列
.getValue() >= 70 で。B列の数値が70以上であるか判定
これでメールを送るには
MailApp.sendEmail()
を使う
MailApp.sendEmail() の中身は
メールアドレス
件名
本文内容となる
今回なら
MailApp.sendEmail(
“メールアドレス”,
“合格者数”,
n+ “名合格”
);
となる
なお、メール送信に承認が必要になる
Authorization Required
This app needs authorization to run.
と聞かれるので
OKをクリック
Send email as you
View and manage your spreadsheets in Google Drive
とAndroid のパーミッションのように聞かれるので
Accept をクリック
これで、実行するとメールが送信される
google apps script で任意の処理を実行
google apps script で任意の処理を実行
#11 onOpen()、onEdit()を使ってみよう
http://dotinstall.com/lessons/basic_google_apps_script/24311
を参考に
スプレッドシートを開いた時や
編集した時に任意の処理を実行する
スクリプトを実行してメニューを追加する
という方法だと
新しいスプレッドシートを開く度に関数実行になるので面倒ということで
スプレッドシートが開いたら自動的に行われるようにする
これは
onOpen() を使うことでできる
function onOpen(){
行う処理
}
でかかれた処理は、スプレッドシートが開かれたときに実行される
例えば、前回作成した
showMenu() の内容を
onOpen() に書くと、自動的に実行されるのがわかる
showMenu を onOpenに書き換えて
スプレッドシートをリロードすると
Help の横に処理メニューが追加されるのがわかる
似たような特殊関数として
onEdit() がある
onEdit() は
function onEdit(e){
処理内容
}
というように
引数に e があることに注意
この e には、編集イベントに関する様々な情報が格納されている
e.range.setComment(“Edited by : “+ e.user);
という処理にすると
e.range で選択したレンジに
.setComment() でコメント表示
e.user は編集したユーザのメールアドレスとなる
つまり、スプレッドシートを編集した瞬間に
コメントが表示され、その編集をしたユーザ名が表示される
今回はメッセージ表示だけだけど
実際には編集したとき行う処理を書くことで
作業効率化が図れる
e に何がはいってくるかを見るには
公式ページの解説である
https://developers.google.com/apps-script/understanding_events
を参考にする
google apps script で関数メニューの表示
google apps script で関数メニューの表示
#10 addMenu()を使ってみよう
http://dotinstall.com/lessons/basic_google_apps_script/24310
を参考に
スプレッドシートに関数を実行させるためのメニューを表示
今回は、関数をメニューに仕込んでいく
function showMenu(){
でスプレッドシートを取得する
var sheet = SpreadSheetApp.getActiveSheet();
だとシートになるので
スプレッドシードの取得には
var ss = SpreadSheetApp.getActiveSpreadSheet();
とする
メニュー項目を
配列で定義する
構文としては
var menu =[
{name:””, functionName: “”},
{name:””,functionName: “”}
];
というように定義していく
今回なら
var menu =[
{name: “初期化”,funetctionName:”initSheet”},
{name: “判定”, fultsnctionName:”getResuts”}
];
そして、メニューに追加するためには
addMenu() で追加する
ss.addMenu(“処理メニュー”,menu);
これで、実行すると
スプレッドシートの
ヘルプの横あたりに
自作の追加メニューが増える
こうすることで
毎回
Tools > script manager
で
関数を選んで実行
という手間が省けるしわかりやすくなる
google apps script でシートデータの判定
google apps script でシートデータの判定
#09 結果の判定をしてみよう
http://dotinstall.com/lessons/basic_google_apps_script/24309
を参考に
getLastRow()を使い
シート中のすべてのデータに対して
分岐処理をすることで
点数に対する判定をつける
これで、合格、不合格とか
ランク処理などもできるようになる
値をみながら判定結果をだすので
1~20行までを for ループでまわす
function getResults(){
で新しい関数を作成
まずは、ActiveSheet を選択
var sheet = SpreadSheetApp.getActiveSheet();
これに対してループをまわせばOK
最終行まで、というループの場合は
getLastRow() をつかう
行数が把握できているなら
for(i=1; i<=20; i++)
でもいいけど、
変化したり、膨大な数になる、もしくは
最大値がいくつになるかわからないから拡張性をもたせたいというのなら
for(i=1; i<=sheet.getLastRow(); i++)
というようにしたほうがよい
感覚としては
.length とかに近いかんじ
今回は点数で合格、不合格の判定をするので
if で分岐する
if(sheet.getRange(i,2).getValue() >= 70)
これで、70点以上なら合格というようにする
getRange(i,2) は B列という意味
getvalue() はその値ということなので
>= 70 なら 70以上ということになる
また、メソッドは . でつなげることができる
sheet.getRange(i,3).setValue(“OK”).setBackground(“green”);
とすることで
70点以上だったときの処理をしている
getRange(i,3) で3列目 つまりC列
setValue(“OK”) でOKという文字をセット
setBackground(“green”)
で背景色を緑にしている
そして 70 以下だった場合の処理として
sheet.getRange(i,3).setvalue(“NG”).setBackground(“red”);
とすれば
NGと表示され背景色は赤になる
テストの結果だけでなく
実験結果
会計や投資対象の分析などにも使える
google apps script で乱数入力とシートの初期化
google apps script で乱数入力とシートの初期化
#08 テストデータを作ってみよう (2)
http://dotinstall.com/lessons/basic_google_apps_script/24308
を参考に
乱数のデータ入力とシートの初期化を実行
前回の実行結果をクリアするには
sheet.clear();
を実行すると
以前の実行結果を消すことができる
前回からの続きの場合
B1の色が変わっているので
sheet.clear() を実行することで、この色の変更を無効化できる
値をランダム入力するには
sheet.getRange(i,2).setValue(Math.floor(Math.random() * 101));
とすることで 0~100 の数値が入力される
getRange(i,2)
なので
i は 1~20
2 は B列を意味する
google apps script テストデータ作成
google apps script テストデータ作成
#07 テストデータを作ってみよう (1)
http://dotinstall.com/lessons/basic_google_apps_script/24307
を元に
java script のループを使ってシートをランダムデータで埋める
今回は
テスト結果を書き込んでいき
合格、不合格の判定を行う
入力するデータは
google apps script をつかってランダムデータを
入力する
function initSheet(){
まず、シートの選択
var sheet = SpreadSheetApp.getActiveSheet();
というように
getActiveSheet() でいきなり指定できる
A 氏名
B 点数
とする
同じ人が何度も試験を受けたということにしている
var name = [“taguchi”,”fkoji”,”dotinstall”];
という3人とする
次に、ループを使い、20回受けたことにする
for(var i=1; i<=20; i++){
これで20回ループする
次に、名前をランダムで入力するようにする
sheet.getRange(i,1).setValue(names[Math.floor(Math.random() * name.length)]);
で表示できる
sheet.getRange(i,1)
の部分では
A列の指定になる
1 がA列を指定して
i が 1~20 の番号になる
setValue() でスコアの設定になる
Math.floor() は小数点以下は繰り下げになる
これで、実行すると
Aのところに名前がランダムに入力される