maiを送信する際に、どのスプレッドシートから送信されたのかがわかるように、シートのURLやシート名などを取得して、件名と本文に記載するということをやってみました。
「スプレッドシート」と「シート」という表現がちょっとわかりにくいかもしれませんが、「スプレッドシート」は開いているファイルそのもので、「シート」はその中にタブ区切りである「シート1」「シート2」などのことです。
前回は件名も本文もないメールを送信しましたが、今回は件名にスプレッドシート名とシート名を記載して、本文にシートのURLを記載するというコードを書きました。
シートのURLについては、.getUrl()だけでは取得できなかったので、.getUrl()でスプレッドシートのURLを取得した後に、.getSheetId()で開いているシートのIDを取得して、2つをくっつけました。
実際のシートのURLを見てみると、スプレッドシートのURLとシートIDとの間に「#gid=」が入っているので、文字列としてそれも間に入れました。
他にも方法があるかもしれませんが、ひとまずこれでシートからスクリプトで送ったメールに、そのシートをワンクリックで開くリンクを記載することができました。
ポイント
1. スプレッドシート名を取得します。
var ss_name = ss.getName();
2. 開いているシート名を取得します。
var sh_name = sh.getSheetName();
3. スプレッドシートのURLを取得します。
var ss_url = ss.getUrl();
4. 開いているシートのIDを取得します。
var sh_id = sh.getSheetId();
5. シートのURLを指定するために、スプレッドシートのURLとシートIDを"#gid="でくっつけます。
ss_url + "#gid=" + sh_id;
コード.gs
function send_email() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sh = ss.getActiveSheet(); var ss_name = ss.getName(); var sh_name = sh.getSheetName(); var ss_url = ss.getUrl(); var sh_id = sh.getSheetId(); var mail_address = Session.getActiveUser().getEmail(); var subject = ss_name + "/" + sh_name + "のURLです。"; var message = ss_url + "#gid=" + sh_id; MailApp.sendEmail(mail_address, subject, message); }
コードを実行する
実行する手順については前回の「スクリプトからmailを送信する」を御覧ください。
実行すると、
件名:「スプレッドシート名/シート名のURLです。」
本文: シートのURL
のメールが送信されます。