将属性添加到Html模板会出现错误“对象不允许添加或更改属性”

时间:2018-04-09 03:18:34

标签: google-apps-script

我正在尝试从Google电子表格中检索数据,但当我尝试将data对象添加到我的htmlTemplate对象时,我收到错误

  

'对象不允许添加或更改属性'

我的代码非常简单:

function showDialog() {
  var htmlTemplate = HtmlService.createHtmlOutputFromFile('index');

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheets()[0];
  var range = sheet.getDataRange();
  var values = range.getValues(); //get the spreadsheet data

  htmlTemplate.data = values; // error here
  ...
}

有人能告诉我这有什么问题吗?

2 个答案:

答案 0 :(得分:5)

而不是createHtmlOutputFromFile(filename)使用createTemplateFromFile(filename)

上面因为第一个返回一个不允许添加属性的HtmlOutput对象,而第二个返回一个允许添加属性的HtmalTemplate。

答案 1 :(得分:3)

一旦您已经创建了htmlOutput,就无法添加属性,而是应该在模板中填充属性,然后评估该模板以便消耗属性[如果您正在消费],然后是最终的htmlOutput生产。

就代码而言:

function showDialog() {
  //Create a template
  var htmlTemplate = HtmlService.createTemplateFromFile('index');

  //Fetch the data
  var ss = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0].getDataRange().getValues();

  //Plug in those data in template
  htmlTemplate.data = values;

  //Finally evaluate the template, to produce the actually html from the template
  var htmlOutput = htmlTemplate.evaluate();

  //Return [if required]
  return htmlOutput;
}