実用GAS(自分の)CASE4:シフト確認用メール一斉送信ツール

利用用途

紙、口頭ベースでシフトを募集しシフトを作る事で「入れたつもりがない」というなど問題が起きたのをきっかけに、エビデンスを取りつつ工数を減らせないか考えた。また、BCCで送と返信がある時メールのツリーがごちゃごちゃになるし、シフト担当が変わったときに引き継ぎ易いようにシートを作った。

ちなみに

1、スクリプト作る

2、スプレッドシートにメアド名前いれる(またはVlookupでひっぱってもいい)

3、ワードの文章を入れる(これは初回のみでOK)

4、シフト回答フォームを作る


スプレッドシート1

画像1

for文で回してるので名前があればあるだけ送信してくれます。

ワード

画像2






スクリプト

function myFunction() {
/* スプレッドシートのシートを取得と準備 */
var mySheet=SpreadsheetApp.getActiveSheet(); //シートを取得
var rowSheet=mySheet.getDataRange().getLastRow(); //シートの使用範囲のうち最終行を取得

/* ドキュメント「メール本文テスト」を取得する */
var docTest=DocumentApp.openById("ここにワードのID"); //ドキュメントをIDで取得
var strDoc=docTest.getBody().getText(); //ドキュメントの内容を取得

/* シートの全ての行について姓名を差し込みログに表示*/
for(var i=2;i<=rowSheet;i++){
var strEmail=mySheet.getRange(i,1).getValue(); //email
var strSei=mySheet.getRange(i,2).getValue(); //姓
var strMei=mySheet.getRange(i,3).getValue(); //名
var strShime=mySheet.getRange(i,4).getValue(); //締日
var strURL=mySheet.getRange(i,5).getValue(); //URL
var strMonth=mySheet.getRange(i,6).getValue(); //期日

var strBody=strDoc.replace
(/{姓}/g,strSei).replace(/{名}/g,strMei).replace(/{締日}/g,strShime)
.replace(/{URL}/g,strURL).replace(/{期日}/g,strMonth);;
/* メール表題、fromアドレス、差出人名を準備 */

var strSubject=
 "【ここに会社名いれてた\t】" + strMonth + "\t シフト提出の御願い" //姓 名 様 メールタイトル
var strFrom="誰のメアドで送るか"; //From ※送る人のIDで一度承認が必要だったはず。
var strSender="〇〇〇"; //差出人 ※裏で個人のメアドにして表には会社名で送信してました。

  /* メールを送信 */
   GmailApp.sendEmail(
     strEmail, //toアドレス
     strSubject,  //メールタイトル
     strBody, //本文
     
     {
       from: strFrom, //fromアドレス
       name: strSender, //差出人
       cc:"必要ならここにCCで送信する人のメアド",
   }
   ); 
   
 }
}

画像

画像8

スクリプト上9行目に記載のワードIDは下画像で隠している(最後のUだけ見えている)/editの前のワードページ単体のURLID(正しい表記か不明)

画像8

ボタンにファンクションを連携

画像3

見づらいけど、ボタン上で右クリックすると、・が縦に3つ並んでるものがあるのでそこでクリック

画像4

スクリプトを割り当てる。

受け取った側から見えるメール

画像9


画像7

ここに記載する人の名前で送信される

(TOとかCCとかみようとしたら30行目のメアドは見れる)

フォームは割愛

この記事が気に入ったらサポートをしてみませんか?