スキルアップを始める!

【GAS】送信したメールの承認リンクを開いたら列のステータスを承認にするスクリプト

GAS(GoogleAppsScript)
GAS(GoogleAppsScript)
この記事は約3分で読めます。

※記事中に広告情報を含みます。

\ワードプレスのスキルアップはこちら!/ WordPress入門読本

GASでメールを送信するスクリプトは過去に何度も作りましたが「相手がメール内の承認リンクを押したかどうか分かるようにしたい」というケースもあるかと思います。

そんなこと可能なのかな…?と思っていたら、どうやら可能なようでしたので作成してみます。

確認用のスプレッドシートを準備する

まずは、送信した後のステータスが分かるようにスプレッドシートを準備します。

このような感じでシンプルな表です。こちらをGASで送信をかけます。

関数を準備する

こちらも何度も書いていますが、スプレッドシートにコンテナバインドスクリプトでWEBアプリケーション化します。

送信用の関数と、本文内のリンクをクリックした関数を準備します。

function sendMessage(e) {

}

function doGet(e) {

}

メール送信用の関数

まずはメールが送信できるようにします。今回は、ひとまず指定した行の相手にメールを送るようにします。

メール送信に関しての細かい仕組みは、別の記事を参考ください。

const sheet = SpreadsheetApp.getActiveSheet();

function sendMessage(e) {
const recipient = sheet.getRange(2, 1).getValue(); //アドレス
const subject = sheet.getRange(2, 4).getValue();
let body = sheet.getRange(2, 5).getValue()+'\n';
body += 'https://script.google.com/a/XXXXXXXXXXXXXexec';
body += `?row=2`;

console.log("recipient:"+recipient);
console.log("subject:"+subject);
console.log(body);

GmailApp.sendEmail(recipient, subject, body);
}

こちらを実行すると、2行目のメールアドレス宛に、2行目の件名・2行目の本文の内容が送信されます。

実行すると、メールが送信されました!

WEBアプリケーション化する

あとは、こちらのリンクをクリックした際に、スクリプトが実行できるようにWEBアプリケーション化します。

function doGet(e) {
const row = e.parameter.row;
sheet.getRange(row, 6).setValue('承認');
}

ページを開いた時に承認したことが分かるようにHTMLタグを設定します。

function doGet(e) {
const row = e.parameter.row;
sheet.getRange(row, 6).setValue('承認');
let html = '<h1>承認しました</h1>';
return HtmlService.createHtmlOutput(html);
}

あとは、こちらをWEBアプリケーションとしてデプロイします。

スクリプトを実行してメール内のリンクをクリックすると、文字が表示されました。

[rml_read_more]

ステータスが承認に変わる

スプレッドシートを見ると、ステータスが「承認」に変わっていました!

まとめ

このような感じで、WEBアプリケーションにパラメータを渡すとスプレッドシートを実行できます!あとはループなどで回せば一斉送信も可能ですね!(送信制限があるので注意が必要ですが…)

ご参考ください。

URLをコピーしました!