freedom-man.com

ブログは俺のセーブポイント

Tag: google apps script

Google Apps ScriptからSalesforceのAPIを叩いてみる。【色々イジる編】

前回はGoogleAppsScriptを使ってSalesforceのaccess_token取得まで行いました。

今回は実際にレコード取得してセルに入れたり、データを更新したり

MetadataAPI使ってカスタムオブジェクト作っちゃったりと色々とやってみます!

 

1. レコード取得してデータを格納

コードはこんな感じ。

UserPropertyの”session_info”にはaccess_token等を格納しています。

checkAuthorizationはaccess_tokenの有効期限が切れたらrefresh_tokenで更新する関数。

getFieldsFromQueryResultでヘッダ用にQueryResultから取得した

項目のAPI参照名のリストを取得してます。

 

レコード数多い場合はレスポンスのnextRecordsUrlを使ってループさせることになります。

 

2. データ更新

選択したセルの取引先(SalesforceIDで判別)を更新する役立たないサンプル↓

 

UrlFetchApp.fetchメソッドがPATCHに対応していないため、そのままではPATCHのAPIは叩けませんが

Salesforce様はサーバーサイドでPATCHに対応していないアプリケーションに対して考慮してくれていて

URLパラメータに_HttpMethod=PATCHというのを付与してPOSTすれば

PATCHとして処理を行ってくれるみたいです。(→リファレンス

 

3. カスタムオブジェクト作成

今回はCRUDベースではなくFileベースのMetadata APIを使いました。

XMLファイル作成→Zip圧縮→httpコール→ポーリング

という流れになります。

 

 

注意点としてはzipの階層を

-hogehoge/objects/GAS__c

-hogehoge/package.xml

というように任意のディレクトリ(ここではhogehoge)をrootに持っていかないといけないところ。

root直でpackage.xmlを置いても No package.xml foundというエラーが出ちゃいます。

それさえ気をつければ、あとはforce.com IDEでよく見る階層構造でXMLを詰め込んでいくだけ!

 

上記サンプルはがっつりハードコーディングしてますが、スプレッドシートから値を引っ張ってきたり

GドライブにあるzipファイルをデプロイしたりGAS自体Googleのサービスと相性が良いので色々と応用は効きそう。

 

また、GASはチョー簡単にcronが出来るので、MetadataAPIを使えばretrieveして

GoogleDriveに突っ込んで任意の環境に自動デプロイするといったCIチックなことも出来ます(多分)。

 

ただし、一応制限あるっぽいので、SFDCと同じように注意が必要。

https://developers.google.com/apps-script/guides/services/quotas

 

Google Apps ScriptからSalesforceのAPIを叩く【access_token取得まで】

前回はVBAでSalesforceの環境を弄りましたが、VBAだとローカル環境なスクリプト言語なので、操作性やパフォーマンスの良さ等のネイティブな良さを活かせる一方で、ネットに繋がっている環境でいつでも、どこでも、どんな端末でも動かしたいという要件は満たせません。

そんなときにはGoggle Apps Scriptが便利です。Google Apps ScriptはGoogleのサービスを拡張できたり、Webサービス作れたりするPaaSなスクリプト言語になります。

Continue reading

© 2017 freedom-man.com

Theme by Anders NorenUp ↑