Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Salesforce中的对象在Google Apps脚本/Javascript中被解释为字符串_Javascript_Google Apps Script_Salesforce - Fatal编程技术网

Salesforce中的对象在Google Apps脚本/Javascript中被解释为字符串

Salesforce中的对象在Google Apps脚本/Javascript中被解释为字符串,javascript,google-apps-script,salesforce,Javascript,Google Apps Script,Salesforce,我们将数据从Salesforce拉入Google文档,Google应用程序脚本从Salesforce获取HTTP请求。salesforce提供了一个名为“products”的对象,但Google Apps脚本将其解释为字符串 function doGet(product) var productVar = product; Logger.log(productVar); 结果是这样的: "(OpportunityProduct1:{Product10Id=01726388aaa, Quan

我们将数据从Salesforce拉入Google文档,Google应用程序脚本从Salesforce获取HTTP请求。salesforce提供了一个名为“products”的对象,但Google Apps脚本将其解释为字符串

function doGet(product)

var productVar = product;

Logger.log(productVar);
结果是这样的:

"(OpportunityProduct1:{Product10Id=01726388aaa, Quantity=4.00, ListPrice=3.0, Sales_Price__A=3.00})"

我们可以将其作为对象获取,或者以任何方式将其转换为对象/列表/数组

首先使用JavaScript字符串方法编辑字符串

function processString() {

  var originalStr = "(OpportunityProduct1:{Product10Id=01726388aaa, Quantity=4.00, ListPrice=3.00, Sales_Price__A=3.00})";
  var i=0, thisCharacter = "";
  //Remove spaces
  for (i=0;i<originalStr.length;i+=1) {
    thisCharacter = originalStr[i];
    //Logger.log(thisCharacter)
    if (thisCharacter === " ") {
      Logger.log(i);
      var front = originalStr.slice(0,i);
      var back = originalStr.slice(i+1);
      originalStr = front + back;
    };
  };

  Logger.log(originalStr)
  var strNewObject = "";

  var myRegEx = new RegExp("=","g");

  strNewObject = originalStr.replace(myRegEx, '":"');

  strNewObject = strNewObject.replace("{", '{"');
  strNewObject = strNewObject.replace("}", '"}');
  strNewObject = strNewObject.replace(/,/g, '","');

  strNewObject = strNewObject.replace("(", '{"'); //Need out curly brace for valid JSON
  strNewObject = strNewObject.replace(")", "}"); //Need out curly brace for valid JSON
  strNewObject = strNewObject.replace(":", '":'); //

  Logger.log('strNewObject: ' + strNewObject);

  var newObject = JSON.parse(strNewObject);

  Logger.log(newObject);
  Logger.log(typeof newObject);


  Logger.log(newObject.OpportunityProduct1.Quantity)
};

使用应用程序脚本编辑器中的快捷键“Ctrl”+“空格键”显示可用服务的列表。

您只需
var productObject=eval(productVar)如果您相信它不包含恶意代码。

应用程序脚本的JSON解析器会接受此语法吗?Salesforce返回的是
Name=Value
,而不是
“Name”:Value
。可能需要执行一些字符串操作(或编写一个reviver函数)。不,这是真的,Salesforce的字符串不是JSON字符串,它“只是一个字符串”。我们真的被卡住了,太棒了。谢谢可以首先在字符串中搜索“function”:
if(strObj.indexOf(“function”)!==-1{return}var myNewObject = JSON.parse(productVar);