Google Sheet API Connector を介した Voice REST API 利用ガイド

Google Sheet API Connector を介した Voice REST API 利用ガイド

お知らせ:当社は、お客様により充実したサポート情報を迅速に提供するため、本ページのコンテンツは機械翻訳を用いて日本語に翻訳しています。正確かつ最新のサポート情報をご覧いただくには、本内容の英語版を参照してください。

このドキュメントでは、Google スプレッドシートの API Connector を使用して Voice REST API を利用し、音声データを Google スプレッドシートに取り込む手順を説明します。正常に連携できるよう、手順に沿って設定してください。

 前提条件

  • Google スプレッドシートと Google アカウントを利用できること。

  • Google スプレッドシートに API Connector アドオンがインストールされていること。

  • OAuthトークンを使用して Voice REST API にアクセスできること。

設定手順

ステップ1:Google スプレッドシートを開き、新しいスプレッドシートを作成します。
ステップ2:API Connector をインストールします。
  1. まず、Workspaceに移動し、API Connector 拡張機能をインストールします。

  2. Google スプレッドシートの[拡張機能]タブに API Connector が表示されていることを確認します。

ステップ3:API Connector を設定します

  1. Google スプレッドシートの[拡張機能]メニューから API Connector を開きます。

  2. 新しいAPIリクエストを設定するには、[作成]をクリックします。

  3. 次の詳細を入力します。

    • [API URL]:[対象のAPI URLをここに挿入]。

    • [メソッド]:GETまたはPOST(APIの要件に応じて選択)。

    • [OAuth]:接続の管理]→[カスタムOAuthを追加]に移動します。

  1. カスタムOAuth接続を設定するには

  1. アプリケーションの作成後、生成されたクライアントIDクライアントシークレットをコピーします。

  2. API Connector内の[カスタムOAuth]フォームで、次の項目を入力します。

    • [OAuth認可タイプ]:認可コード

    • [名前]:ZohoVoiceOAuth

    • [認可ベースURL]:https://accounts.zoho.com/oauth/v2/auth

    • [トークンURL]:https://accounts.zoho.com/oauth/v2/token

    • [クライアントID]:Zoho OAuthクライアントIDを貼り付けます

    • [クライアントシークレット]:Zoho OAuthクライアントシークレットを貼り付けます

7. リクエストを実行するには、[保存して実行]をクリックします。

  • APIリクエストが成功すると、データが Google スプレッドシートの指定した列に入力されます。

  • データが想定どおりに出力されていることを確認します。 

Delugeによる Google スプレッドシート連携   

ステップ1:Google スプレッドシートの接続を作成します。
  1. Zoho Voice → 設定 → ワークフロー → 接続に移動します。

  2. 接続を作成]をクリックします。

  3. サービス一覧からGoogleサービスを選択します。

  4. 接続名]を入力します(googlesheetという名前を正確に使用してください)。

  5. スコープ]セクションで設定します。

  1. 作成]、続いて[接続]をクリックします。

  2. Google アカウントでログインし、アクセスを承認します。

これで、Delugeスクリプトで接続を使用できるようになります。

 

ステップ2:ワークフローを作成してスクリプトを追加します

  1. [通話履歴]タブを対象にワークフローを作成します。

  2. 関数セクションで、[新しい関数]をクリックします。

  3. 提供されたスクリプトを貼り付けます。

  4. スクリプトの先頭で、次の内容を変更します。

sheetID = 'your-google-sheet-id';

sheetName = 'your-sheet-tab-name';

例。

sheetID = '1b8CxYHkh0obXsJphn3sq56GheRnOV199eZu-lS2HIis';
sheetName = 'ZVoiceLogs';

  1. [保存]をクリックし、ワークフローを有効にします。

Notes

メモGoogle Sheets APIの有効化https://console.cloud.google.com/apis/library/sheets.googleapis.comに移動し、[有効にする]をクリックします。

 Delugeスクリプト 

// ---------- CONFIG ----------
sheetID = '<SHEET ID';

sheetName = '<SHEET NAME>';

 

// ---------- Fetch Existing Headers ----------

fetchHeaderURL = 'https://sheets.googleapis.com/v4/spreadsheets/'+ sheetID + '/values/' + sheetName + '!A1:Z1';

headersResp = invokeurl

[

url : fetchHeaderURL

type : GET

connection : 'googlesheet'

];

 

headerMap = Map();

headerRow = List();

indexOfCol = 0;

if(headersResp.containsKey('values'))

{

existingHeaders = headersResp.get('values').get(0);

for each colName in existingHeaders

{

key = colName.toLowerCase();

if(headerMap.containKey(key))

{

key = key + '_col' + indexOfCol;

}

headerMap.put(key, colName);

headerRow.add(colName);

indexOfCol = indexOfCol + 1;

}

}

else

{

// No headers found — create from data keys

headerRow = data.keys();

payload = map();

payload.put('range', sheetName + '!A1:Z1');

payload.put('majorDimension', 'ROWS');

payload.put('values', {headerRow});

headerUpdateURL = 'https://sheets.googleapis.com/v4/spreadsheets/'+ sheetID + '/values/' + sheetName + '!A1:Z1?valueInputOption=RAW';

response = invokeurl

[

url : headerUpdateURL

type : PUT

parameters : payload.toString()

connection : 'googlesheet'

];

for each colName in headerRow

{

headerMap.put(colName.toLowerCase(), colName);

}

}

 

// ---------- Flatten Multi-value Fields ----------

nestedFields = list();

nestedFields.add('departments');

nestedFields.add('agents');

nestedFields.add('call_queues');

flattenedData = map();

for each key in data.keys()

{

val = data.get(key);

if(nestedFields.contains(key))

{

nameList = list();

for each item in val

{

nameList.add(item.get('name'));

}

flattenedData.put(key, nameList.toString(', '));

}

else

{

flattenedData.put(key, val);

}

}

 

// ---------- Add New Headers (if needed) ----------

newHeaderFound = false;

for each key in flattenedData.keys()

{

if(!headerMap.containsKey(key.toLowerCase()))

{

headerRow.add(key);

newHeaderFound = true;

}

}

 

// ---------- Update Header Row if New Headers Exist ----------

if(newHeaderFound)

{

payload = map();

payload.put('range', sheetName + '!A1:Z1');

payload.put('majorDimension', 'ROWS');

payload.put('values', {headerRow});

headerUpdateURL = 'https://sheets.googleapis.com/v4/spreadsheets/'+ sheetID + '/values/' + sheetName + '!A1:Z1?valueInputOption=USER_ENTERED';

response = invokeurl

[

url : headerUpdateURL

type : PUT

parameters : payload.toString()

connection : 'googlesheet'

];

}

 

// ---------- Construct Row Data ----------

rowData = list();

for each col in headerRow

{

key = col.toLowerCase();

val = flattenedData.get(key);

if(val == null)

{

rowData.add('');

}

else

{

rowData.add(val);

}

}

 

// ---------- Append Data Row ----------

payload = map();

payload.put('values', {rowData});

appendURL = 'https://sheets.googleapis.com/v4/spreadsheets/'+ sheetID + '/values/' + sheetName + '!A1:append?valueInputOption=USER_ENTERED';

response = invokeurl

[

url : appendURL

type : POST

parameters : payload.toString()

connection : 'googlesheet'

];

 

info 'Data appended to sheet successfully.';

Notesメモ:追加のサポートが必要な場合は、こちらにお問い合わせください:support@zohovoice.com