Javascript 在Google脚本web应用程序中格式化客户端的API数据

Javascript 在Google脚本web应用程序中格式化客户端的API数据,javascript,api,google-apps-script,Javascript,Api,Google Apps Script,我正在通过CRM API提取数据,并成功地在我的Google Script web应用程序前端呈现这些数据。但在前端处理或格式化这些数据对我来说是一个挑战 在下面的代码中,第二行的潜在名称正在向页面呈现正确的数据。但是第一行名为Quote显示未定义。此数据是我试图格式化的数据,以便仅将最后六个字符或字符串打印到页面 显然,我一定是试图错误地从API访问数据。有人能给我提供在谷歌脚本中操作这些数据的正确方法吗 代码.gs function doGet() { var templ = Htm

我正在通过CRM API提取数据,并成功地在我的Google Script web应用程序前端呈现这些数据。但在前端处理或格式化这些数据对我来说是一个挑战

在下面的代码中,第二行的
潜在名称
正在向页面呈现正确的数据。但是第一行名为
Quote
显示未定义。此数据是我试图格式化的数据,以便仅将最后六个字符或字符串打印到页面

显然,我一定是试图错误地从API访问数据。有人能给我提供在谷歌脚本中操作这些数据的正确方法吗

代码.gs

function doGet() {
    var templ = HtmlService.createTemplateFromFile('Allied-po');
    templ.data = requestRecordFromCRM();
    return templ.evaluate()
        .setTitle('Purchase Order')
        .setSandboxMode(HtmlService.SandboxMode.IFRAME);
}

/*Fetch record data from CRM*/
function requestRecordFromCRM() {
    requestedId = '1234';
    var authToken = 'XXXX';
    var zohoRequestUrl = 'https://crm.zoho.com/crm/private/json/Potentials/getRecordById?&authtoken=' + authToken + '&scope=crmapi&id=' + requestedId;
    var response = UrlFetchApp.fetch(zohoRequestUrl);
    var sanitizedResponse = (response.getContentText());

    /*Sanitize json*/
    var output = JSON.parse(sanitizedResponse);
    Logger.log(output);

    /*Declare the variables you want to print*/
    var parsedOutput = output.response.result.Potentials.row.FL;
    var recordObj = {}

    Logger.log(typeof output)
    Logger.log(output.response.result.Potentials.row.FL.length)

    for (var i = 0; i < output.response.result.Potentials.row.FL.length; i++) {
      if (output.response.result.Potentials.row.FL[i].val == 'Potential Name') {
        recordObj.potentialName = output.response.result.Potentials.row.FL[i].content
      } 
    }

    return (recordObj);
}
函数doGet(){
var templ=HtmlService.createTemplateFromFile('Allied-po');
temp.data=requestRecordFromCRM();
返回temp.evaluate()
.setTitle(“采购订单”)
.setSandboxMode(HtmlService.SandboxMode.IFRAME);
}
/*从CRM获取记录数据*/
函数requestRecordFromCRM(){
requestedId='1234';
var authToken='XXXX';
zohoRequestUrl变种https://crm.zoho.com/crm/private/json/Potentials/getRecordById?&authtoken=“+authToken+”&scope=crmapi&id=”+requestedId;
var response=UrlFetchApp.fetch(zohoRequestUrl);
var sanitizedResponse=(response.getContentText());
/*清理json*/
var output=JSON.parse(sanitizedResponse);
Logger.log(输出);
/*声明要打印的变量*/
var parsedOutput=output.response.result.Potentials.row.FL;
var recordObj={}
Logger.log(输出类型)
Logger.log(输出、响应、结果、电位、行、FL.length)
对于(变量i=0;i
Index.html

<html>
    <head>
        <base target="_blank">
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <title>Purchase Order</title>
        <?!= HtmlService.createHtmlOutputFromFile('Stylesheet').getContent(); ?>
    </head>
    <body>
      <div>
         Quote: <span id="job-number"><?= data.potentialName ?></span>
      </div>
      <div>
         Potential Name: <?= data.potentialName ?>
      </div>
        <?!= HtmlService.createHtmlOutputFromFile('Javascript').getContent(); ?>
    </body>
</html>
    <!-- Load jQuery, jQuery UI, and Bootstrap libraries -->
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>
    <script>
        //Format Job Numbers - return only last six characters in potentialName string
        (function() {

          var parts = document.getElementById('job-number');
          var selectedPart = parts.split(":");
          var thePart = selectedPart[0];

          return (thePart);
        }());
</script>

采购订单
引述:
潜在名称:
Javascript.html

<html>
    <head>
        <base target="_blank">
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <title>Purchase Order</title>
        <?!= HtmlService.createHtmlOutputFromFile('Stylesheet').getContent(); ?>
    </head>
    <body>
      <div>
         Quote: <span id="job-number"><?= data.potentialName ?></span>
      </div>
      <div>
         Potential Name: <?= data.potentialName ?>
      </div>
        <?!= HtmlService.createHtmlOutputFromFile('Javascript').getContent(); ?>
    </body>
</html>
    <!-- Load jQuery, jQuery UI, and Bootstrap libraries -->
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>
    <script>
        //Format Job Numbers - return only last six characters in potentialName string
        (function() {

          var parts = document.getElementById('job-number');
          var selectedPart = parts.split(":");
          var thePart = selectedPart[0];

          return (thePart);
        }());
</script>

//格式化作业编号-仅返回potentialName字符串中的最后六个字符
(功能(){
var parts=document.getElementById('job-number');
var selectedPart=parts.split(“:”);
var thePart=selectedPart[0];
返回(部分);
}());

此特定代码检索HTML元素,但不检索innerHTML文本

 var parts = document.getElementById('job-number');
相反,这样做是为了获得可用于拆分字符串的嵌入式HTML,如下所示:

var parts = document.getElementById('job-number').innerHTML;
最终代码如下所示:

<script>
        //Format Job Numbers - return only last six characters in potentialName string
   (function() {
      var parts = document.getElementById('job-number');
      var selectedPart = parts.innerHTML.split(":");
      console.log(parts)
      console.log(selectedPart)
      var thePart = selectedPart[1];
      parts.innerHTML = thePart
      return (thePart);
    }());

</script>

希望有帮助

这很有道理,但它仍然没有将字符串的编辑版本打印到页面上。该对象通常看起来是这样的:公司ABC:123456。我们正试图得到最后六个数字。但即使有了这些更改,它仍然在打印完整的字符串,ABC公司:123456。是的,就是这样!非常感谢。