皆さんこんにちは。
広告配信システムの管理画面開発と全社業務自動化のRPA開発を担当してるR.Aです。
以前UiPathでSalesforceのOpportunityテーブルの更新ロボットについて執筆を行いましたが、今回はGoogle Apps Script(GAS)でAPIを使用しSalesforceのOpportunityを更新するロボットについて説明したいと思います。
社内では、営業管理・顧客管理のためSalesforceを使用していますが、フェーズ管理で更新を行う時に一つ一つログインを行い、更新を行わないといけないためとても負担となっておりました。
以前はUiPathを使用しておりましたが、現在はGASでほぼ自動化をしており、今回は実際に稼働しているGASを紹介できればと思います。
1、Salesforceのアクセストークンの取得
①Salesforceの設定画面より接続アプリケーションの作成まず、Salesforceで更新を行うためのアクセストークンを取得します。
設定画面 -> アプリケーションの設定 から接続アプリケーションを選択し、作成を行います。 作成を行うと上記のようにコンシューマ鍵・コンシューマの秘密が取得できます。
上記2つのキーとID・パスワードを使用し、アクセストークンを取得します。
②アクセストークンの取得
上記のコンシューマ鍵・コンシューマの秘密鍵を使用しアクセストークンを取得します。
その際にメールアドレス・ログインパスワードも一緒にリクエストを行います。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
function create_access_token(creation_target,value2,sheet) { // APIのリクエストでPOSTデータのパラメータを設定 var payload = { grant_type:'password', client_id:'①で取得したコンシューマ鍵', client_secret:'①で取得したコンシューマの秘密鍵', username:'アカウント名', password:'ログインパスワード' }; var options = { method:'POST', payload:payload, muteHttpExceptions: true }; //HTTPリクエストを行う。 var requestUrl = 'https://MyDomainName.my.salesforce.com/services/oauth2/token'; var response = UrlFetchApp.fetch(requestUrl, options); letjson = JSON.parse(response); return json } |
2、更新に必要なパラメータの取得
SalesforceでOpportunity更新を行うためには、更新するOpportunity情報とユーザーID(User__c)を取得する必要があります。それぞれの情報は以下のSQLで取得します。UserIDの取得
1 2 3 4 5 6 7 |
SELECT Id, Name FROM User__c WHERE Name='更新したいアカウント名' AND IsDeleted=False AND GroupName__c='グループ名' |
1 2 3 4 |
SELECT * FROM Opportunity WHERE Id='ヨミID' |
3、取得した情報を元にOpportunityの更新
2で取得した情報を元に更新を行いたい要素を更新します。今回はOpportunityのメニュー名を変更する例を紹介させていただきます。 更新の詳細は以下のドキュメントを参考にしてください。
https://developer.salesforce.com/docs/atlas.ja-jp.object_reference.meta/object_reference/sforce_api_objects_opportunity.htm
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
var payload = { menumei__c: '更新をしたいメニュー名', user__c: '上記で取得したユーザーID' }; var json = JSON.stringify(payload); UrlFetchApp.fetch("https://MyDomainName.my.salesforce.com/services/data/v53.0/sobjects/opportunity/" + "OpportunityID", { method : 'PATCH', payload : json, headers : { Authorization: 'Bearer ' + 'Salesforceのアクセストークン', Content-Type: 'application/json' }, muteHttpExceptions: true } ); |
リクエストを送る際にpayloadに更新情報・headersのAuthorizationに1で取得を行ったアクセストークンを付与いたします。 実際にOpportunityの確認を行うと以下のように値が更新されている事が確認できます。
いかがだったでしょうか。 GASのみでSalesforceのOpportunityを更新することができました。
こちらを応用し、Opportunityの作成やユーザーの取得を行うことも可能です。
明日は@mSpringさんによる「BigQueryでCIDRに含まれるIPアドレスを探す(IPv6対応)」です。
引き続き、GMOアドマーケティング Advent Calendar 2022 をお楽しみください!
■学生インターン募集中!
https://note.gmo-ap.jp/n/nc42c8a60afaf
■エンジニア採用ページはこちら!
https://note.gmo-ap.jp/n/n02cbeb6edb0d
■GMOアドパートナーズ 公式noteはこちら!
https://note.gmo-ap.jp/