LANG SELRCT

コードを書く場所についてはこちら

2016年6月28日火曜日

シートのURLとシート名を取得する

前回書いた「スクリプトからmailを送信する」の続きです。
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
のメールが送信されます。