Javascript Google Sheets中的HTML对话框Google.script.run。无法运行应用程序脚本函数
我正在使用Google Sheets与一位老朋友进行远程游戏(得到游戏发行商的许可) 我试图使用一个带有按钮的HTML对话框来触发一些脚本。我已经通读了文档和Yagisanatode博客中的所有示例。除了Javascript Google Sheets中的HTML对话框Google.script.run。无法运行应用程序脚本函数,javascript,html,google-apps-script,google-sheets,Javascript,Html,Google Apps Script,Google Sheets,我正在使用Google Sheets与一位老朋友进行远程游戏(得到游戏发行商的许可) 我试图使用一个带有按钮的HTML对话框来触发一些脚本。我已经通读了文档和Yagisanatode博客中的所有示例。除了google.script.run.addEgg()没有触发code.gs中的addEgg()函数之外,这个东西的每一部分都可以工作 我将包含相关的代码位。在进一步构建之前,我正在努力让一个按钮触发一个脚本 通过单击ObjectOverGrid触发的EggFoodTuck01(),成功启动该对话
google.script.run.addEgg()
没有触发code.gs中的addEgg()
函数之外,这个东西的每一部分都可以工作
我将包含相关的代码位。在进一步构建之前,我正在努力让一个按钮触发一个脚本
通过单击ObjectOverGrid
触发的EggFoodTuck01()
,成功启动该对话框
function EggFoodTuck01(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = SpreadsheetApp.setActiveSheet(ss.getSheetByName('Decks'));
sheet.getRange('CurrentCard').setValue(0); // Record Card Number in 'CurrentCard' Cell (0-14)
sheet.getRange('CurrentSheet').setValue('Player 1'); // Record Sheet Name in 'CurrentSheet'
// Launch dialog
var html = HtmlService.createHtmlOutputFromFile("EFTDialog");
ui.showModalDialog(html, "What would you like to do?");
}
HTML对话框显示正确。单击[+Egg]按钮启动actionAddEgg()
,因为对话框关闭。无论出于何种原因,addEgg()
没有在我的应用程序脚本中运行
您缺少google.script.run
是异步的。这意味着google.script.host.close()
可能在有效执行google.script.run.addEgg()调用之前执行
一个选项是使用和SuccessHandler
调用google.script.host.close()
您缺少的另一件事是,google.script.run
将使用用于登录google服务的默认帐户执行。一个快速解决方案是与默认帐户共享电子表格
相关的
您缺少
google.script.run
是异步的。这意味着google.script.host.close()
可能在有效执行google.script.run.addEgg()调用之前执行
一个选项是使用和SuccessHandler
调用google.script.host.close()
您缺少的另一件事是,google.script.run
将使用用于登录google服务的默认帐户执行。一个快速解决方案是与默认帐户共享电子表格
相关的
- 服务器和客户端脚本函数不应使用相同的函数名(
addEgg
)。考虑更改函数名中的一个。< /P>
- 在
successHandler
中使用close
,因为google.script.run
是异步的。这一点在本节中提到
- 服务器和客户端脚本函数不应使用相同的函数名(
addEgg
)。考虑更改函数名中的一个。< /P>
- 在
successHandler
中使用close
,因为google.script.run
是异步的。这一点在本节中提到
您是否将命名范围定义为
CurrentCard
和CurrentSheet
?您确定相应的getRange返回的是类范围对象而不是null
?你用的是什么运行时,新的(V8)还是旧的(Rhino)?我想是的。如果我在对话框关闭后从编辑器中手动运行addEgg()函数而不启动它,则该函数将正确执行,并且蛋数将递增。它是V8。您是否将命名范围定义为CurrentCard
和CurrentSheet
?您确定相应的getRange返回的是类范围对象而不是null
?你用的是什么运行时,新的(V8)还是旧的(Rhino)?我想是的。如果我在对话框关闭后从编辑器中手动运行addEgg()函数而不启动它,则该函数将正确执行,并且蛋数将递增。这是V8,我试着搞乱它,但我不太明白。我确实理解你所说的可能会发生的事情,以及为什么会发生,所以我会继续读下去。我从actionAddEgg()函数中取出google.script.host.close(),看看addEdd()函数是否可以在没有它的情况下运行。我等了大约20秒,然后手动关闭对话框。没有骰子-(@PatrickLollis您是否尝试过在禁用所有扩展的情况下以匿名模式使用Chrome?使用旧的运行时而不是新的运行时如何?我尝试过,但没有成功。函数actionAddEgg(){google.script.run.withSuccessHandler(google.script.host.close).addEgg();}
该代码有错误。您查看了我在回答中包含的链接吗?它在匿名模式下工作!(带有HTML脚本的版本)我试图搞乱它,但没有真正理解它。我确实理解你所说的可能发生的事情,以及为什么会发生,所以我会继续读下去。我从actionAddEgg()函数中取出google.script.host.close(),看看addEdd()是否函数将在没有它的情况下运行。我等待了大约20秒,然后手动关闭对话框。没有骰子。:-(@PatrickLollis您是否尝试过在匿名模式下使用Chrome并禁用所有扩展?使用旧的运行时而不是新的运行时如何?我尝试过,但没有成功。function actionAddEgg(){google.script.run.withSuccessHandler(google.script.host.close).addEgg();}
该代码有错误。您是否查看了我在回答中包含的链接?它在匿名模式下工作!(HTML中包含脚本的版本)