GoogleAppsScript
twilio
SMS

Google Apps ScriptでTwilioを使ってSMS送信

More than 1 year has passed since last update.

Google Spread SheetからSMSを使いたい!

ってことで、その方法です。

Twilioに登録

SMSを使うためにTwilioというサービスを使います。
これは電話やSMSをAPI経由で扱えるサービスです。

http://twilio.kddi-web.com からサインアップしてください。

SMSを使うにはアメリカ(+1)の電話番号を使わないといけないみたいです。
詳細は以下を参照してください。
http://qiita.com/zaru/items/079fa96cba1081a76b10

TwilioのサイトからSMSをテスト送信

https://jp.twilio.com/user/account/developer-tools/api-explorer/message-create のページからSMSを送信できます。

また、このページから以下の情報をメモしておきましょう。

  • AccountSid
  • Auth Token

Google Apps ScriptからSMS送信

以下のコードでSMSを送信できます。

上記のTwilioのURLから得た以下の情報を適宜使ってください。

  • Twilioで取得したアメリカの電話番号
  • AccountSid
  • Auth Token

また、電話番号は基本、+国コードから始まる形式(E.164 形式)でないと動きません。

SMSManager.gs
var SMSManager = (function() {
    "use strict";

    var TWILIO_SMS_API_URL = "https://api.twilio.com/2010-04-01/Accounts/#{AccountSid}/Messages.json";
    function SMSManager(from, accountSid, auth_token){
        this.from = from;
        this.accountSid = accountSid;
        this.auth_token = auth_token;
        this.sms_api_url = TWILIO_SMS_API_URL.replace("#{AccountSid}", accountSid);
    }
    // 送信結果のステータスコードを返します。
    SMSManager.prototype.send = function(to, body){
        var options = {
            method: "post",
            headers: {
                Authorization: " Basic " + Utilities.base64Encode(this.accountSid + ":" + this.auth_token)
            },
            payload: {
                To: to,
                From: this.from,
                Body: body
            },
            muteHttpExceptions: true,
        };
        var response = UrlFetchApp.fetch(this.sms_api_url, options);
        var code = response.getResponseCode();
        return code;
    };

    return SMSManager;
})();

main.gs
function main(){
    var from = "+100000000"; //Twilioで取得したアメリカの電話番号
    var accountSid = "YOUR_ACCOUNT_SID";
    var auth_token = "YOUR_AUTH_TOKEN";
    var sms = new SMSManager(from, accountSid, auth_token);

    var phone_number = "+819011111111"; // 090XXXX形式ではダメで+8109XXXX形式(E.164 形式)にする
    var message = "こんにちゎ";
    // 送信結果のステータスコードが返ります。
    var code = sms.send(phone_number, message);

    // 送信成功時には201が返るみたいです。
    if (code == 200 || code == 201){
       Logger.log("送信成功");
    } else {
       Logger.log("送信失敗");
    }
}

価格

TwilioのSMSの利用料は以下サイトに載っています。
http://twilio.kddi-web.com/price/

ドコモ宛だと1回10円ぐらいかかっちゃうので、ミスってfor文, while文でまわしちゃうとえげつないので注意してください。