実用GAS(自分の)CASE4:シフト確認用メール一斉送信ツール
利用用途
紙、口頭ベースでシフトを募集しシフトを作る事で「入れたつもりがない」というなど問題が起きたのをきっかけに、エビデンスを取りつつ工数を減らせないか考えた。また、BCCで送と返信がある時メールのツリーがごちゃごちゃになるし、シフト担当が変わったときに引き継ぎ易いようにシートを作った。
ちなみに
1、スクリプト作る
2、スプレッドシートにメアド名前いれる(またはVlookupでひっぱってもいい)
3、ワードの文章を入れる(これは初回のみでOK)
4、シフト回答フォームを作る
スプレッドシート1
for文で回してるので名前があればあるだけ送信してくれます。
ワード
スクリプト
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で送信する人のメアド",
}
);
}
}
画像
スクリプト上9行目に記載のワードIDは下画像で隠している(最後のUだけ見えている)/editの前のワードページ単体のURLID(正しい表記か不明)
ボタンにファンクションを連携
見づらいけど、ボタン上で右クリックすると、・が縦に3つ並んでるものがあるのでそこでクリック
スクリプトを割り当てる。
受け取った側から見えるメール
ここに記載する人の名前で送信される
(TOとかCCとかみようとしたら30行目のメアドは見れる)
フォームは割愛
この記事が気に入ったらサポートをしてみませんか?