【问题标题】:Data won't post correctly数据不会正确发布
【发布时间】:2020-07-24 15:28:47
【问题描述】:

我正在尝试使用 Google Apps 脚本发布到 Salesforce 以创建新帐户。我可以使用我的凭据很好地使用 SOQL 进行查询。当我尝试发布时,它基本上会返回数据,就好像我在描述帐户一样,并且不会创建新帐户。我尝试使用带有此有效负载的工作台休息 API,并且可以毫无问题地创建帐户,所以我知道这不是字段/值的问题。

function pushToSalesforce(){
  var userProperties = PropertiesService.getUserProperties();
  var instance_url = "https://na9.salesforce.com";
  var access_token = userProperties.getProperty('access_token');
 
  var payload = {
    "Name" : "testaccount",
    "Website" : "testaccountstuff.com",
    "Platform__c" : "API",
    "Industry" : "Apparel"
  };
  
  var queryUrl = instance_url + '/services/data/v26.0/sobjects/account/';
  
  var headers = 
      { 
        "method" : "POST",
        "contentType" : "application/json",
        "payload": JSON.stringify(payload),
        "headers": {
          "Authorization" : "Bearer "+access_token,
          "Accept": "application/json"
        }
      };
  var response = UrlFetchApp.fetch(queryUrl, headers);
}

我快要疯了,试图找出问题所在。有人有想法吗?

【问题讨论】:

  • 使用 httpbin.org/post 查看发布的内容以及它与其他 api 有何不同。

标签: google-apps-script salesforce http-post soql urlfetch


【解决方案1】:

听起来您的应用正在生成GET 而不是POST。这种语言/HTTP 库是否区分大小写? Documentation seems to use lowercase

您应该向/services/data/v49.0/sobjects/Account 发送POST(您使用的是非常旧的API 版本,但这不重要)。你到底看到了什么?它可能看起来“describe'ish”,但除非您明确调用 /services/data/v49.0/sobjects/Account/describe,否则它不太可能是真实的 describe 结果。

GET 调用 /services/data/v49.0/sobjects/Account 是一种发现,是 API 自我记录的一种方式。返回有关对象的非常基本的信息,例如

{
  "objectDescribe" : {
    "activateable" : false,
    "createable" : true,
    "custom" : false,
    (... snip...)
    "updateable" : true,
    "urls" : {
      "compactLayouts" : "/services/data/v48.0/sobjects/Account/describe/compactLayouts",
      "rowTemplate" : "/services/data/v48.0/sobjects/Account/{ID}",
      "approvalLayouts" : "/services/data/v48.0/sobjects/Account/describe/approvalLayouts",
      "defaultValues" : "/services/data/v48.0/sobjects/Account/defaultValues?recordTypeId&fields",
      "listviews" : "/services/data/v48.0/sobjects/Account/listviews",
      "describe" : "/services/data/v48.0/sobjects/Account/describe",
      "quickActions" : "/services/data/v48.0/sobjects/Account/quickActions",
      "layouts" : "/services/data/v48.0/sobjects/Account/describe/layouts",
      "sobject" : "/services/data/v48.0/sobjects/Account"
    }
  },
  "recentItems" : [ ]
}

正确的描述调用将返回有关您可以在表中看到的所有列的信息,以及与该对象的所有关系(外键)...

【讨论】:

    【解决方案2】:

    在我的实际脚本中是我公司的“我的域”自定义 instance_url(但不想广播它),例如“https://companyname.lightning.force.com”。我尝试使用我的服务器实例“na85”,但效果很好!超级奇怪,因为我有另一个函数使用另一个带有 GET 的 instance_url 并且它没有问题。感谢您的帮助!

    【讨论】:

      猜你喜欢
      • 2021-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-20
      • 2018-03-19
      相关资源
      最近更新 更多