Cvent のデータでGoogle Sheets を拡張

古川えりか
古川えりか
コンテンツスペシャリスト
API Server を介して、Google Apps Script から Cvent を呼び出せます。



マクロ、カスタム関数、アドオンを使用してGoogle スプレッドシートからCvent のデータとやり取りします。CData API Server は、ADO.NET Provider for Cvent(またはその他の240+ ADO.NET Providers)と組み合わせることで、Google Sheets のようなクラウドベースのモバイルアプリケーションからCvent のデータに接続できるようになります。API Server は、Cvent およびCData ADO.NET Providers にサポートされるすべてのソースのOData サービスを生成する軽量のWeb アプリケーションです。

Google Apps Script(GAS)は、これらのOData サービスをJSON 形式で利用できます。この記事では、Google スプレッドシートにEvents データを取り込み、変更を加えたときにCvent のデータの更新を実行するシンプルなアドオンを作成する方法を説明します。

API Server の設定

以下のリンクからAPI Server の無償トライアルをスタートしたら、セキュアなCvent OData サービスを作成していきましょう。

Cvent への接続

GAS からCvent のデータを操作するには、まずCvent への接続を作成・設定します。

  1. API Server にログインして、「Connections」をクリック、さらに「接続を追加」をクリックします。 接続を追加
  2. 「接続を追加」をクリックして、データソースがAPI Server に事前にインストールされている場合は、一覧から「Cvent」を選択します。
  3. 事前にインストールされていない場合は、コネクタを追加していきます。コネクタ追加の手順は以下の記事にまとめてありますので、ご確認ください。
    CData コネクタの追加方法はこちら >>
  4. それでは、Cvent への接続設定を行っていきましょう! 接続設定
  5. Cvent への認証を行う前に、ワークスペースとOAuth アプリケーションを作成する必要があります。

    ワークスペースの作成

    ワークスペースを作成するには:

    1. Cvent にサインインし、App Switcher(ページ右上の青いボタン) -> Admin に移動します。
    2. Admin メニューから、Integrations -> REST API に移動します。
    3. Developer Management の新しいタブが立ち上がります。新しいタブでManage API Access をクリックします。
    4. Workspace を作成し、名前を付けます。開発者にアクセスさせたいスコープを選択します。スコープは、開発者がアクセスできるデータドメインを制御します。
      • All を選択すると、開発者は任意のスコープ、およびREST API にこれから追加されるスコープを選択できます。
      • Custom を選択すると、開発者がOAuth アプリで選択できるスコープを、選択したスコープに制限できます。CData 製品によって公開されるすべてのテーブルにアクセスするには、次のスコープを設定する必要があります。
        event/attendees:readevent/attendees:writeevent/contacts:read
        event/contacts:writeevent/custom-fields:readevent/custom-fields:write
        event/events:readevent/events:writeevent/sessions:delete
        event/sessions:readevent/sessions:writeevent/speakers:delete
        event/speakers:readevent/speakers:writebudget/budget-items:read
        budget/budget-items:writeexhibitor/exhibitors:readexhibitor/exhibitors:write
        survey/surveys:readsurvey/surveys:write

    OAuth アプリケーションの作成

    Workspace を設定して招待すると、開発者はサインアップしてカスタムOAuth アプリを作成できます。手順については、ヘルプドキュメントカスタムOAuth アプリケーションの作成を参照してください。

    Cvent への接続

    OAuth アプリケーションを作成したら、次の接続プロパティを設定してCvent に接続します。

    • InitiateOAuthGETANDREFRESH。OAuthAccessToken を自動的に取得およびリフレッシュするために使用します。
    • OAuthClientId:OAuth アプリケーションに関連付けられたClient ID。これは、Cvent Developer Portal のApplications page ページにあります。
    • OAuthClientSecret:OAuth アプリケーションに関連付けられたClient secret。これは、Cvent Developer Portal のApplications page ページにあります。
  6. 接続情報の入力が完了したら、「保存およびテスト」をクリックします。

Cvent への認証を行う前に、ワークスペースとOAuth アプリケーションを作成する必要があります。

ワークスペースの作成

ワークスペースを作成するには:

  1. Cvent にサインインし、App Switcher(ページ右上の青いボタン) -> Admin に移動します。
  2. Admin メニューから、Integrations -> REST API に移動します。
  3. Developer Management の新しいタブが立ち上がります。新しいタブでManage API Access をクリックします。
  4. Workspace を作成し、名前を付けます。開発者にアクセスさせたいスコープを選択します。スコープは、開発者がアクセスできるデータドメインを制御します。
    • All を選択すると、開発者は任意のスコープ、およびREST API にこれから追加されるスコープを選択できます。
    • Custom を選択すると、開発者がOAuth アプリで選択できるスコープを、選択したスコープに制限できます。CData 製品によって公開されるすべてのテーブルにアクセスするには、次のスコープを設定する必要があります。
      event/attendees:readevent/attendees:writeevent/contacts:read
      event/contacts:writeevent/custom-fields:readevent/custom-fields:write
      event/events:readevent/events:writeevent/sessions:delete
      event/sessions:readevent/sessions:writeevent/speakers:delete
      event/speakers:readevent/speakers:writebudget/budget-items:read
      budget/budget-items:writeexhibitor/exhibitors:readexhibitor/exhibitors:write
      survey/surveys:readsurvey/surveys:write

OAuth アプリケーションの作成

Workspace を設定して招待すると、開発者はサインアップしてカスタムOAuth アプリを作成できます。手順については、ヘルプドキュメントカスタムOAuth アプリケーションの作成を参照してください。

Cvent への接続

OAuth アプリケーションを作成したら、次の接続プロパティを設定してCvent に接続します。

  • InitiateOAuthGETANDREFRESH。OAuthAccessToken を自動的に取得およびリフレッシュするために使用します。
  • OAuthClientId:OAuth アプリケーションに関連付けられたClient ID。これは、Cvent Developer Portal のApplications page ページにあります。
  • OAuthClientSecret:OAuth アプリケーションに関連付けられたClient secret。これは、Cvent Developer Portal のApplications page ページにあります。

API Server のユーザー設定

次に、API Server 経由でCvent にアクセスするユーザーを作成します。「Users」ページでユーザーを追加・設定できます。やってみましょう。

  1. 「Users」ページで ユーザーを追加をクリックすると、「ユーザーを追加」ポップアップが開きます。
  2. 次に、「ロール」、「ユーザー名」、「権限」プロパティを設定し、「ユーザーを追加」をクリックします。
  3. その後、ユーザーの認証トークンが生成されます。各ユーザーの認証トークンとその他の情報は「Users」ページで確認できます。

Cvent 用のAPI エンドポイントの作成

ユーザーを作成したら、Cvent のデータ用のAPI エンドポイントを作成していきます。

  1. まず、「API」ページに移動し、 「 テーブルを追加」をクリックします。
  2. アクセスしたい接続を選択し、次へをクリックします。
  3. 接続を選択した状態で、各テーブルを選択して確認をクリックすることでエンドポイントを作成します。

OData のエンドポイントを取得

以上でCvent への接続を設定してユーザーを作成し、API Server でCvent データのAPI を追加しました。これで、OData 形式のCvent データをREST API で利用できます。API Server の「API」ページから、API のエンドポイントを表示およびコピーできます。

Cvent のデータを取得する

「Tools」->「Script Editor」とクリックして、スプレッドシートからScript Editor を開きます。Script Editor で次の機能を追加し、スプレッドシートにOData クエリの結果を入力します。


function retrieve(){
  var url = "https://MyUrl/api.rsc/Events?select=Id,Id,Title,Virtual";
  var response = UrlFetchApp.fetch(url,{
    headers: {"Authorization":"Basic " + Utilities.base64Encode("MyUser:MyAuthtoken")}
  });
  var json = response.getContentText();
  var sheet = SpreadsheetApp.getActiveSheet();
  var a1 = sheet.getRange('a1');
  var index=1;
  var events = JSON.parse(json).value;

  var cols = [["Id","Id","Title","Virtual"]];
  sheet.getRange(1,1,1,4).setValues(cols);

  row=2;
  for(var i in events){
    for (var j in events[i]) {
      switch (j) {
        case "Id":
          a1.offset(row,0).setValue(account[i][j]);
          break;
        case "Id":
          a1.offset(row,1).setValue(account[i][j]);
          break;
        case "Title":
          a1.offset(row,2).setValue(account[i][j]);
          break;
        case "Virtual":
          a1.offset(row,3).setValue(account[i][j]);
          break;
      }
    }
    row++;
  }
}

次のステップに従って、開いたタイミングでスプレッドシートに入力するインストール可能なトリガーを追加します。

  1. 「Resources」->「Current Project's Triggers」->「Add a New Trigger」とクリックします。
  2. 「Run」メニューで「retrieve」を選択します。
  3. 「From Spreadsheet」を選択します。
  4. 「On open」を選択します。

ダイアログを閉じると、アプリケーションへのアクセスを許可するように要求されます。

Cvent のデータへの変更を追加する

以下の関数を追加し、セルへの変更をAPI Server に追加します。


function buildReq(e){
  var sheet = SpreadsheetApp.getActiveSheet();
  var changes = e.range;
  var id = sheet.getRange(changes.getRow(),1).getValue();
  var col = sheet.getRange(1,changes.getColumn()).getValue();

  var url = "http://MyServer/api.rsc/Events("+id+")";
  var putdata = "{\"@odata.type\" : \"CDataAPI.Events\",  \""+col+"\": \""+changes.getValue()+"\"}";;
  UrlFetchApp.fetch(url,{
    method: "put",
    contentType: "application/json",
    payload: putdata,
    headers: {"Authorization":"Basic " + Utilities.base64Encode("MyUser:MyAuthtoken")}
  });

}

下記の手順に従って、アップデートトリガーを追加します。

  1. 「Resources」->「Current Project's Triggers」とクリックします。
  2. 「Run」メニューで「buildReqe」を選択します。
  3. 「From Spreadsheet」を選択します。
  4. 「On edit」を選択します。

「Publish」->「Test as Add-On」とクリックすることで、スクリプトを確認できます。バージョン、インストールタイプ、およびスプレッドシートを選択し、テストの構成を作成します。作成したら、選択して実行できます。

セルを変更すると、API Server はCvent のデータのアップデートを実行します。

はじめる準備はできましたか?

詳細はこちら、または無料トライアルにお申し込みください:

CData API Server