8

SalesForceでは、データの最大毎週の「バックアップ」/ダンプをここでスケジュールできます:[設定]>[管理設定]>[データ管理]>[データエクスポート]

大規模なSalesforceデータベースがある場合、手動でダウンロードするファイルが大量に存在する可能性があります。

このプロセスを自動化する、または手動を少し少なくするためのベストプラクティス、ツール、バッチファイル、またはトリックを持っている人はいますか?

4

7 に答える 7

12

前回チェックしたとき、APIを介してバックアップファイルのステータス(または実際のファイル)にアクセスする方法がありませんでした。設計上、このプロセスを自動化するのが困難になっているのではないかと思います。

Salesforceスケジューラを使用して毎週ファイルを準備し、ファイルをダウンロードするローカルサーバーで実行されるスケジュールされたタスクがあります。いくつかのWebリクエストを自動化/スクリプト化する機能があると仮定して、ファイルをダウンロードするために使用できるいくつかの手順を次に示します。

  1. アクティブなセールスフォースセッションID/トークンを取得する
    • エンタープライズAPI-login()SOAPメソッド
  2. 組織ID(「組織ID」)を取得します
    • 設定>会社概要>会社情報または
    • エンタープライズAPIのgetUserInfo()SOAP呼び出しを使用して、組織IDを取得します
  3. HTTP GETリクエストをhttps:// {your sf.com instance} .salesforce.com / ui / setup / export / DataExportPage / d?setupid=DataManagementExportに送信します
    • リクエストCookieを次のように設定します。
      • oid={あなたの組織ID}; sid={セッションID};
  4. 次のインスタンスの結果のHTMLを解析します<a href="/servlet/servlet.OrgExport?fileName=
    • (ファイル名はfileName =の後に始まります)
  5. ファイル名をこのURLに接続して、ダウンロード(および保存)します。
    • https://{yoursf.comインスタンス}.salesforce.com /servlet /servlet.OrgExport?fileName = {filename}
    • ファイルをダウンロードするときは、手順3と同じCookieを使用してください

これは決してベストプラクティスではありませんが、作業は完了します。言うまでもなく、問題のページのレイアウトを変更すると、これはおそらく機能しなくなります。お役に立てれば。

于 2012-04-16T22:54:38.483 に答える
8

SalesForceバックアップファイルをダウンロードするためのスクリプトは、https://github.com/carojkov/salesforce-export-downloader/で入手できます。

Rubyで記述されており、どのプラットフォームでも実行できます。提供される構成ファイルには、ユーザー名、パスワード、およびダウンロード場所のフィールドが含まれています。

少しの設定で、ダウンロードを開始できます。スクリプトは、完了または失敗時に電子メール通知を送信します。

Rubyソリューションが機能しない場合に、独自のプログラムを作成するために必要な一連の手順を理解するのは簡単です。

于 2013-07-27T21:59:36.363 に答える
6

私はCMOでcloudHQの共同創設者であるナオミですので、これはおそらく答えるべき質問だと思います。:-)

cloudHQは、クラウドを同期するSaaSサービスです。あなたの場合、Salesforceからのデータエクスポートとしてレポートをアップロードする必要はありませんが、Salesforceを同期したサービス(Dropbox、Googleなど)の「SalesforceReports」というラベルの付いたフォルダーに常にバックアップしておく必要があります。ドライブ、ボックス、Egnyte、Sharepointなど。

このサービスは無料ではありませんが、15日間の無料トライアルがあります。現在のところ、Salesforceレポートを他のクラウドストレージ会社とリアルタイムで実際に同期するサービスは他にありません。

ここで試してみることができます:https ://cloudhq.net/salesforce

これがお役に立てば幸いです。

乾杯、ナオミ

于 2014-12-03T18:15:34.263 に答える
2

バックアップファイルで何を取得しているのかを知っていることに注意してください。バックアップは65種類のCSVファイルのzipです。これは生データであり、SalesforceUIの外部では簡単に使用できません。

于 2012-11-09T14:42:18.180 に答える
2

当社は、プロセスを完全に自動化するための無料のDataExportConsoleコマンドラインツールを作成しています。次のことを行います。

  1. Salesforceスケジューラを使用して毎週のデータエクスポートを自動化する
  2. Windowsタスクスケジューラを使用して、適切なパラメータでFuseIT.SFDC.DataExportConsole.exeファイルを実行します。
于 2013-04-18T04:11:24.550 に答える
0

最近、Bulk APIを使用して、json構成ファイルを介して定義したsObjectのコピーをダウンロードする小さなPHPユーティリティを作成しました。

かなり基本的ですが、ニーズに合わせて簡単に拡張できます。

github上のForce.comレプリケーター。

于 2013-07-15T08:44:57.260 に答える
0

Python3.6ソリューションを追加します。動作するはずです(私はそれをテストしていませんが)。パッケージ(requests、BeautifulSoup、simple_salesforce)がインストールされていることを確認してください。

import os
import zipfile
import requests
import subprocess
from datetime import datetime
from bs4 import BeautifulSoup as BS
from simple_salesforce import Salesforce

def login_to_salesforce():
    sf = Salesforce(
        username=os.environ.get('SALESFORCE_USERNAME'),
        password=os.environ.get('SALESFORCE_PASSWORD'),
        security_token=os.environ.get('SALESFORCE_SECURITY_TOKEN')
    )
    return sf

org_id = "SALESFORCE_ORG_ID"  # canbe found in salesforce-> company profile
export_page_url = "https://XXXX.my.salesforce.com/ui/setup/export/DataExportPage/d?setupid=DataManagementExport"

sf = login_to_salesforce()
cookie = {'oid': org_id, 'sid':sf.session_id}
export_page = requests.get(export_page_url, cookies=cookie)
export_page = export_page.content.decode()

links = []
parsed_page = BS(export_page)
_path_to_exports = "/servlet/servlet.OrgExport?fileName="
for link in parsed_page.findAll('a'):
   href = link.get('href')
   if href is not None:
       if href.startswith(_path_to_exports):
           links.append(href)

print(links)
if len(links) == 0:
    print("No export files found")
    exit(0)

today = datetime.today().strftime("%Y_%m_%d")
download_location = os.path.join(".", "tmp", today)
os.makedirs(download_location, exist_ok=True)
baseurl = "https://zageno.my.salesforce.com"

for link in links:
    filename = baseurl + link
    downloadfile = requests.get(filename, cookies=cookie, stream=True)  # make stream=True if RAM consumption is high
    with open(os.path.join(download_location, downloadfile.headers['Content-Disposition'].split("filename=")[1]), 'wb') as f:
        for chunk in downloadfile.iter_content(chunk_size=100*1024*1024):  # 50Mbs ??
            if chunk:
                f.write(chunk)
于 2018-04-05T14:29:35.723 に答える