こんにちは!
アキです~
前回、業務改善のために週報をExcelからGoogleスプレッドシートに変更しました。
今回はさらに手を加えて、Google Apps Scriptを使って、
スプレッドシートから、週報を提出するメールをボタン一つで送れるようにしました。
メール送信のGAS
週報は毎週月曜にメールで会社に提出してます。
今回はメールを送るGASを作りました。
メールの内容はこんな感じです(実際に送ったもの)
上記のメールを送るためのGASはこちら(キレイなものではないですが)
function send_syuho() {
var emailAddress = ['送り先その①', '送り先その②','送り先その③'];
var sheet = SpreadsheetApp.getActiveSheet();
var subject = sheet.getName() + '_週報提出(名前)';
var body = '各位\r\n\r\nお疲れ様です。\r\n名前です。\r\n\r\n';
body += sheet.getName() + '分の週報を提出致します。\r\nよろしくお願いいたします。';
body += '\r\n\r\n\r\n';
var ss = SpreadsheetApp.getActiveSpreadsheet();
var url = ss.getUrl();
body += url;
GmailApp.sendEmail(emailAddress, subject, body);
}
あまり特筆するものはないですが、
GmailApp.sendEmail()メソッドでメールを送ってます。
送り先やメールの件名・文面はソースコードに直書きですw
週報はスプレッドシートのURLをgetUrl()で取得して貼り付けています。
あと関数はsheet.getName()でシート名(年月日)を取得しているくらいです。
参考
https://qiita.com/rf_p/items/ecce989c632ddf11fc96
スプレッドシートにボタンを作る
次にスプレッドシートからメールを送るためのボタンを作りました。
上記のボタンを作るためのGASがこちら
function onOpen() {
var ui = SpreadsheetApp.getUi();
var menu = ui.createMenu('週報送信');
menu.addItem('週報送信', 'send_syuho'); //ここでメール送信スクリプト呼び出し
menu.addToUi();
}
これで、スプレッドシートのメニュー上に「週報送信」ボタンができます。
少しだけ開設すると、
createMenu()やaddItem()はメニューを追加するメソッドです。
createMenu()からは先ほど作成したメール送信スクリプトを呼び出してます。
onOpen()はスプレッドシートを開いたときに何らかのアクションをしてくれるメソッドです。
なのでこのGASは、
「このスプレッドシート開いたら週報送信っていうボタンを作るよ」
というアクションをしてくれてます。
詳しくは参考先URLを見てくださいw
参考
https://tonari-it.com/gas-spreadsheet-addmenu-onopen/
https://qiita.com/howdy39/items/46ca1f2fd9d27eaba0c3
ただし・・・
残念なことにスマホからは動きませんでした。。。
スマホからGASが動かない事象については、公式マニュアルにもちゃんと書かれれていないと、ネットでウワサがありましたが、今はどうなっているのでしょう・・・
そもそもGoogleスプレッドシートで週報を作った目的は
「スマホから週報を提出したい!」
だったので、これでは目的が果たせません。。。
さらに改善していきます。
コメント
アキさんこんにちは。スマホでGASを操作することをいろいろ調べていて、検索していたらたまたまこのサイトをお見かけしました。スプレッドシートで作った週報をスマホ経由で送りたいが、なかなか出来ないとありましたが、その後いかがですか?
私は地方の機械メーカーに勤めていますが、今いる部署でスマホを使った簡単なワークフロー(GASで)を作ろうと思っています。(実際、簡易的なものを作ってやっています)スプレッドシートに作ったボタンはスマホ上では使えないのでどうにかならないものかとここ数ヶ月思い悩んでいました。とりあえずの解決法ですが、参考になればと思い、以下のやり方をご紹介します。
私は現在、スプレッドシートのスクリプトを起動させるのにフォームを使ってやっています。フォームを起動ボタン代わりに使うのです。(トリガーの設定を「フォーム送信時」、に設定します。)
アキさんの週報提出もこのやり方で出来るのではないかと思います。現在お使いのスプレッドシートにリンクさせたフォームを新規に作り、それを起動ボタン代わりにするのです。いちいちフォーム呼び出すのも面倒でしょうからスマホのホーム画面にショートカットを置いてそこから起動します。
ここでは細かく説明できないのでもし、ご興味があればメール下さい。私のやり方を紹介します。(Googleは1年くらいしかいじってないのでまだまだ初心者です)
スマホからはできないんですが、作成した関数でしたらスマホからでも動くみたいです。
なので、セルのA1に○でもなんでも打ったら、作成した関数がそこを参照していて、
もし○が入ったら送信するとかにすれば、一応関数として、GASは動きますよ。