javascript - "this"无法转换为Ui类型的值

标签 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() 时,得到的错误如下:

[错误:内部错误:使用 [object Object] 作为无法转换为 Ui 类型的“this”值调用方法“showSidebar”。

有什么想法可以解决这个问题吗?

最佳答案

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

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

当您获取该函数引用时,除非您执行上述操作,否则运行时将(或可能;这里显然是这样做的)使用其他一些 this 值(取决于 API)调用该函数)。

关于javascript - "this"无法转换为Ui类型的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20912368/

相关文章:

javascript - 从 map 上新添加的标记中找到最近的标记

javascript - 如何将 Google 脚本表单数据导出到 Google 云端硬盘?

google-app-engine - 谷歌应用/应用引擎 : https version of naked domain does not redirect

php - 克隆 div 并逐步重命名元素 ID

javascript - 如何在 Vuetify 中进行屏蔽输入?

javascript - 尝试添加新项目以存储发布前第一个项目的值

javascript - Jquery 显示/隐藏更多数据

google-apps-script - 谷歌电子表格 "The document cannot be modified. Perhaps it has grown too large?"错误

google-apps-script - 存储在云 SQL 数据库中的 Google 表单数据

google-apps-script - 如何从 Google Apps Script 连接到 Facebook Graph API?