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

Jia*_*NCI 3 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
  ...
}
Run Code Online (Sandbox Code Playgroud)

谁能告诉我这有什么问题?

Rub*_*bén 5

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

以上是因为第一个返回一个HtmlOutput对象,该对象不允许添加属性,而第二个返回一个允许添加属性的HtmalTemplate.


Uma*_*mad 5

一旦您已经创建了 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;
}
Run Code Online (Sandbox Code Playgroud)