LoginSignup
15
16

More than 5 years have passed since last update.

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

Posted at

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文でまわしちゃうとえげつないので注意してください。

15
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
16