Salesforce中的对象在Google Apps脚本/Javascript中被解释为字符串
我们将数据从Salesforce拉入Google文档,Google应用程序脚本从Salesforce获取HTTP请求。salesforce提供了一个名为“products”的对象,但Google Apps脚本将其解释为字符串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
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}你们是了不起的家伙,非常感谢你们,真不敢相信以前没人问过这个问题。这工作完美!桑迪,你应该把尼克换成桑迪上帝:]哈哈。我不想侮辱上帝。我想这个问题以前可能有人问过,但可能是关于将PHP对象文本转换为JavaScript选项,或者类似的问题。但问题是,除非你知道搜索的确切术语,否则很难找到答案。
var myNewObject = JSON.parse(productVar);