Google Apps脚本返回HTML语法错误

时间:2018-02-06 20:03:21

标签: google-apps-script

嘿伙计们,我对编码非常陌生,我遇到了一个我无法理解的语法错误。我已经在线查看了错误以及更糟糕的情况,我已经设法让脚本在收到错误之前提前工作。我正试图从Google表格中取出行并将它们固定在地图上。

我收到的错误是在第9行,我尝试返回数组。任何意见或建议将非常感谢!谢谢你们试图提供帮助。具体做法是:

return html.evaluate().setTitle('Company Directory Map');

以下是我的代码:

function doGet(e) {

  var html = HtmlService.createTemplateFromFile('DirectoryHTML');
  var ss = SpreadsheetApp.getActiveSpreadsheet();

  html.ss = parseDirectory(ss.getSheetByName('Directory Address & Name').getRange('A2:R').getValues());

  return html.evaluate().setTitle('Company Directory Map');

}

function parseDirectory(values) {
 var locations = [];
  for (var i = 1; i < values.length; i++) {
    locations.push({
      LocationID: values[i][1],

      LocationName: values[i][4],
      Address: values[i][6],
      AddressDetail: values[i][7],
      City: values[i][8],
      State: values[i][9],
      Zipcode: values[i][10],
      ZipcodeExtension: values[i][11],
      mapURL: getMapUrl(values[i][6,8,9,10,11]),
      Phone: values[i][12],
      Fax: values[i][13],
      EnteralPhone: values[i][14],
      EnteralFax: values[i][15],
      Type: values[i][16],
      Notes: values[i][17]

     });
    }
      return locations;
    }

function getMapUrl(city) {
  return Maps.newStaticMap().setSize(1200, 600).setCenter(41.37132419162449,-112.13662837438801).getMapUrl();
}

修改 以下是我的HTML代码供参考:

<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
  </head>
  <body>
   <? = for(var i = 0, i < locations.length; i++) {?>
      <div>
      <img src = "<? locations[i].mapUrl ?>" />
      <h2><?= locations[i].LocationID ?></h2>
      <!-- <h4><?= locations[i].Address ?></h4> -->
      </div>
   <? } ?>
   </body>
</html>

1 个答案:

答案 0 :(得分:0)

语法错误的原因是HTML代码中存在语法错误,特别是此行

<? = for(var i = 0, i < locations.length; i++) {?>

1)您正在使用打印scriptlet,但没有要打印的变量/输出。请使用标准scriptlet而不是<? ?>
2)循环的正确语法是for(var i = 0; i < locations.length; i++)。请注意在循环中使用;代替,

最后,您在ss

中设置htmltemplate对象的值
html.ss = parseDirectory(ss.getSheetByName('Directory Address & Name').getRange('A2:R').getValues());

但是,在HTML代码中,您使用对象locations来运行循环。因此,像这样修改你的HTML代码

<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
  </head>
  <body>
  <? var locations = ss ?>
   <?  for(var i = 0; i < locations.length; i++) {?>
      <div>
      <img src = "<?= locations[i].mapUrl ?>" />
      <h2><?= locations[i].LocationID ?></h2>
      <!-- <h4><?= locations[i].Address ?></h4> -->
      </div>
   <? } ?>
   </body>
</html>