“this”值无法转换为Ui类型

时间:2014-01-03 20:43:24

标签: javascript google-apps-script google-apps

我正在使用Google Apps脚本,我正在尝试重新使用调用渲染的代码,这样我就不必重新输入所有内容。我遇到了一个似乎与“这个”变得相关的问题。

代码:

function render(displayMedium, template_name) {

    var js = HtmlService.createTemplateFromFile('javascript.html');
    var css = HtmlService.createTemplateFromFile('stylesheet.html');


    var t = HtmlService.createTemplateFromFile(template_name);
    js.config = config;
    css.config = config;
    t.config = config;
    t.appProperties = appProperties;
    js.appProperties = appProperties;
    t.jsBlock = js.evaluate().getContent();
    t.cssBlock = css.evaluate().getContent();

    displayMedium(
      HtmlService
      .createHtmlOutput(t.evaluate())
      .setSandboxMode(HtmlService.SandboxMode.NATIVE)

};

function renderSidebar(){
  var displayMedium = DocumentApp.getUi().showSidebar;
  var template_name = "app.html";
  render(displayMedium, template_name);
};

当我调用renderSidebar()时,我得到的错误如下:

[错误:InternalError:方法“showSidebar”被调用,[object Object]为“this”值,无法转换为Ui类型。

任何想法如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

如果将函数绑定到UI对象,它应该可以工作:

var displayMedium = DocumentApp.getUi().showSidebar.bind(DocumentApp.getUi());

当您获取该函数引用时,除非您执行上述操作,否则运行时将(或者可能;它显然在此处)调用具有其他this值的函数(取决于API)。 / p>