Salesforce 如何自动下载每周导出服务文件
在SalesForce中,您可以在以下位置安排每周的数据“备份”/转储:设置>管理设置>数据管理>数据导出 如果您有一个大型Salesforce数据库,则可以手动下载大量文件Salesforce 如何自动下载每周导出服务文件,salesforce,Salesforce,在SalesForce中,您可以在以下位置安排每周的数据“备份”/转储:设置>管理设置>数据管理>数据导出 如果您有一个大型Salesforce数据库,则可以手动下载大量文件 是否有人有最佳实践、工具、批处理文件或技巧来自动化此过程或减少手动操作?上次我检查时,无法通过API访问备份文件状态(或实际文件)。我怀疑他们使得这个过程很难通过设计实现自动化 我使用Salesforce scheduler每周准备一次文件,然后我有一个在本地服务器上运行的计划任务,该服务器下载文件。假设您能够自动执行/编
是否有人有最佳实践、工具、批处理文件或技巧来自动化此过程或减少手动操作?上次我检查时,无法通过API访问备份文件状态(或实际文件)。我怀疑他们使得这个过程很难通过设计实现自动化 我使用Salesforce scheduler每周准备一次文件,然后我有一个在本地服务器上运行的计划任务,该服务器下载文件。假设您能够自动执行/编写某些web请求的脚本,则可以使用以下步骤下载文件:
- 企业API-login()SOAP方法
- 设置>公司简介>公司信息或
- 使用企业API getUserInfo()SOAP调用检索您的组织ID
- 按如下方式设置请求cookie:
- oid={您的组织ID};sid={您的 会话ID}李>
实例的结果HTML时要小心,要知道备份文件中包含的内容。备份是由65个不同的CSV文件组成的压缩包。它是原始数据,Salesforce用户界面之外的数据不能很容易地使用。我们公司制造了免费的命令行工具来完全自动化该过程。您可以执行以下操作:
使用Salesforce scheduler自动化每周数据导出
使用Windows任务计划程序使用正确的参数运行FuseIT.SFDC.DataExportConsole.exe文件
我最近编写了一个小型PHP实用程序,它使用批量API下载通过json配置文件定义的Sobject副本
它非常基本,但可以轻松扩展以满足您的需要
在github上。下载SalesForce备份文件的脚本位于
它是用Ruby编写的,可以在任何平台上运行。提供的配置文件提供了用户名、密码和下载位置的字段
只需少量配置,您就可以继续下载。脚本在完成或失败时发送电子邮件通知
如果Ruby解决方案对您不起作用,那么很容易找到编写您自己的程序所需的步骤顺序。我是Naomi,CMO,也是cloudHQ的联合创始人,所以我觉得这是一个我应该回答的问题。:-)
cloudHQ是一种SaaS服务,用于同步您的云。在您的情况下,您不需要将报告作为数据导出从Salesforce上传,但您只需要将其备份到标记为“Salesforce reports”的文件夹中,无论您使用哪种服务同步Salesforce,例如Dropbox、Google Drive、Box、Egnyte、Sharepoint等
这项服务不是免费的,但有15天的免费试用期。到目前为止,还没有其他服务能够将Salesforce报告与其他云存储公司实时同步
以下是您可以尝试的地方:
我希望这对你有帮助
干杯,
Naomi添加蟒蛇3.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)
我想在这里提到Skyvia。这是一个第三方工具,允许您使每周导出例行程序自动化。对我来说,这是最省时省钱的方法。他们有分步备份解决方案和一个Salesforce定时备份解决方案—在一个帐户下最多可备份1 TB。谢谢!您是否有可能将您的解决方案一般化(或签出您的凭证/等)并将其粘贴?与此同时,我一直在关注backupify的这项新服务:backupify项目看起来很有趣。我猜他们是在使用salesforce API提取数据,而不是使用salesforce backup准备的文件。我的解决方案是用C#编写的,这对您有用吗?我认为您关于备份的看法是正确的。我对C#一点也不熟悉,所以我不熟悉,但也许其他人会觉得它有用(我认为有必要)——再次感谢您对这个问题的详细反馈!利用@Adam的建议,我编写了一个小型C#应用程序来处理这个问题。你可以在这里访问它:请不要假装你的网站不是你自己的,而推广你的网站。这个工具真的使用了计划的导出还是它自己的?我问是因为它使用API(不是电子邮件链接),我听说计划的导出链接不是API的一部分。好主意!我设法让脚本运行并下载了ZIP。不幸的是,它们都已损坏,因此我无法使用它们。有什么想法吗?谢谢!这可能与Ruby版本、操作系统或文件读写选项有关。我的脚本运行在Linux上,ruby版本ruby 1.9.3p484。事实上,我想我可能看到了问题所在。尝试将第133行的文件打开选项的“w”替换为“wb”:f=open(“#{@data_directory}/#{fn}”,“wb”)。如果这样做有效,我将对源代码进行更改。不幸的是,我无法在windows上测试此功能,因此您的反馈至关重要。非常感谢。使用“wb”而不是“w”是有效的,非常感谢!谢谢!在从获取CA证书并设置SSL_CERT_FILE环境变量(如中所述)后,此脚本对我(Win10,Ruby 2.2.5)有效。此解决方案是否需要启用API?我们有SF专业版,它没有启用API。我已经尝试了你的登录方法,但我没有访问权限,这就是为什么我要问。谢谢