WhatsAppAPIを使用してGoogleスプレッドシートからWhatsAppメッセージを送信する方法

公開: 2022-06-16

WhatsApp with Google Sheets

このチュートリアルでは、新しいWhatsAppAPIをGoogleApps Scriptで使用して、GoogleスプレッドシートからWhatsAppメッセージを送信する方法について説明します。 同じアプローチは、新しいフォームの送信が受信されたときにGoogleフォームからWhatsAppメッセージを送信する場合にも機能します。

ステップ1:WhatsAppアプリを作成する

developers.facebook.comにアクセスし、[ Create App ]ボタンをクリックして、WhatsAppメッセージの送信に使用する新しいアプリを作成します。

Facebook WhatsApp App

アプリの種類として[ Business ]を選択します。

アプリにわかりやすい名前を付け(アプリ名にWhatsAppFacebookなどのFacebookの商標を使用しないでください)、[ Create App ]ボタンをクリックしてアプリを作成します。

WhatsApp App Name

アプリが作成されたら、次の画面で[ WhatsApp ]ボタンをクリックして、WhatsApp送信機能をアプリに追加します。

次の画面で、WhatsAppアプリをFacebookビジネスアカウントにリンクする必要があります。 まだお持ちでない場合は、新しいビジネスアカウントを作成することもできます。

Add WhatsApp App

ステップ2:受信者の電話番号を追加する

Facebookは、アプリのデフォルトの送信アドレスとなるテスト用のWhatsApp電話番号を提供します。 受信者の場合、開発段階で最大5つの電話番号を追加するオプションがあります。支払いは必要ありません。

WhatsAppアプリは、23時間有効な一時的なアクセストークンを提供します。 後のステップで必要になるので、このトークンをメモしておきます。

WhatsApp Phone Number

次に、[ Recipient Phone Number ]ドロップダウンをクリックして、最大5つの異なるWhatsApp電話番号をアプリに追加します。 追加された番号の確認コードを受け取り、コードで確認された番号にのみWhatsAppメッセージを送信できます。

Verify Phone Number

ステップ3:WhatsAppメッセージテンプレートを作成する

テンプレートマネージャーに切り替えて、新しいWhatsAppメッセージテンプレートを作成します。

この例では、 Account Updateとしてカテゴリを選択し、メッセージテンプレートに一意の名前を付けます。 言語については、コード言語がenである英語を選択します。 別の言語を使用する場合は、メッセージの送信に必要なコード言語をメモしてください。

WhatsApp Message Template

パーソナライズされたメッセージを書く

メッセージでは変数パラメータを使用しており、これらはGoogleスプレッドシートの実際の値に置き換えられます。 これは、MailMergeおよびDocumentStudio内で使用した可能性のあるマーカーと非常に似ていますが、これらが位置マーカーであり、名前付きマーカーではないというわずかな違いがあります。

これがメッセージテンプレートです。変数{{1}}と{{2}}はそれぞれ顧客名とアイテム名用です。

WhatsApp Message Template

WhatsAppが新しいメッセージテンプレートを承認するまでに最大1分かかる場合があります。

ステップ4:WhatsAppメッセージを送信する

Facebook / WhatsApp側のすべての構成が完了したので、これらのパーソナライズされたWhatsAppメッセージを実際に自動化された方法で送信するGoogleスプレッドシートで作業してみましょう。

ここをクリックして、WhatsAppシートを自分のGoogleアカウントにコピーしてください。

Google sheets WhatsApp

次に、Googleスプレッドシートの[電話番号]列に電話番号(国コード付き)を追加します。 前の手順でテストWhatsAppアカウントで確認した番号のみを追加する必要があります。

次に、[拡張機能]メニューに移動し、[AppsScript]を選択して基になるスクリプトを開きます。 WHATSAPP_ACCESS_TOKENWHATSAPP_TEMPLATE_NAMEを、前の手順でコピーした値に置き換えます。

Apps Scriptエディタ内の[ Run ]ボタンをクリックすると、リストされた電話番号にWhatsAppメッセージが即座に送信されます。

以下にあるのは、WhatsApp APIによって送信される実際のWhatsAppメッセージであり、テンプレート内の変数マーカーをGoogleスプレッドシートの実際の値に置き換えています。

WhatsApp Message Text

技術的な詳細

WhatsAppAPIがGoogleAppsScriptとどのように連携するか

Google AppsScriptはGoogleスプレッドシートに接続し、WhatsAppを介してメッセージを送信する電話番号などの顧客の詳細を取得します。

 // Get data from Google Sheets // for sending messages through WhatsApp const getSheetData_ = ( ) => { const sheet = SpreadsheetApp . getActiveSheet ( ) ; const [ header , ... rows ] = sheet . getDataRange ( ) . getDisplayValues ( ) ; const data = [ ] ; rows . forEach ( ( row ) => { const recipient = { } ; header . forEach ( ( title , column ) => { recipient [ title ] = row [ column ] ; } ) ; data . push ( recipient ) ; } ) ; return data ; } ;

次に、スクリプトはシートの各行を繰り返し処理し、UrlFetchサービスを使用してWhatsAppCloudAPIを呼び出してWhatsAppメッセージを送信します。

 // Send Message with WhatsApp Cloud API const sendMessage_ = ( e ) => { const apiUrl = 'https://graph.facebook.com/v13.0/114746974570888/messages' ; const request = UrlFetchApp . fetch ( apiUrl , { muteHttpExceptions : true , method : 'POST' , headers : { Authorization : ` Bearer ${ WHATSAPP_ACCESS_TOKEN } ` , 'Content-Type' : 'application/json' , } , payload : JSON . stringify ( { type : 'template' , messaging_product : 'whatsapp' , to : e . recipient_number , template : { name : WHATSAPP_TEMPLATE_NAME , language : { code : LANGUAGE_CODE } , components : [ { type : 'body' , parameters : [ { type : 'text' , text : e . customer_name } , { type : 'text' , text : e . item_name } , { type : 'text' , text : e . delivery_date } , ] , } , ] , } , } ) , } ) ; const { error } = JSON . parse ( request ) ; if ( error ) { Logger . log ( ` ${ error } ` ) ; } else { Logger . log ( ` Message sent to ${ recipient_number } ` ) ; } } ; const main = ( ) => { getSheetData_ ( ) . forEach ( ( row ) => { const status = sendMessage_ ( { recipient_number : row [ 'Phone Number' ] . replace ( / [^\d] / g , '' ) , customer_name : row [ 'Customer Name' ] , item_name : row [ 'Item Name' ] , delivery_date : row [ 'Delivery Date' ] , } ) ; } ) ; } ;

関連項目:Googleスプレッドシートを使用したワークフローの自動化