我正在使用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类型。
任何想法如何解决这个问题?
答案 0 :(得分:0)
如果将函数绑定到UI对象,它应该可以工作:
var displayMedium = DocumentApp.getUi().showSidebar.bind(DocumentApp.getUi());
当您获取该函数引用时,除非您执行上述操作,否则运行时将(或者可能;它显然在此处)调用具有其他this
值的函数(取决于API)。 / p>