我们创建了一个用于邮件合并目的的Google应用脚本。我们打开一个Google文档,然后打开一个脚本,用于选择带地址的电子表格,选择电子表格后我们需要授权代码。我们可以在脚本编辑器中进行授权,但是会为每个邮件合并类型复制此文档,因此最终用户需要进行授权。那么这就是问题发生的地方。最终用户只会收到消息。
“遇到错误:执行该操作需要授权。”
好的,但是通常由网络应用程序显示的弹出窗口不会出现。所以用户根本无法授权。我们不能要求我们的最终用户转到脚本编辑器并运行代码编辑器,这样他们就可以进行授权。
我们可以在脚本中手动弹出授权码吗?
答案 0 :(得分:7)
以下是我在文档嵌入式脚本中使用的例程,该脚本仅使用普通的GAS服务,尝试查看它是否符合您的要求。
function onOpen() {
var ui = DocumentApp.getUi();
if(!UserProperties.getProperty('author')){
ui.createMenu('Custom Menu')
.addItem("Authorize this app", 'authorize')
.addToUi();
var html = HtmlService.createHtmlOutputFromFile('index1')
.setTitle("Install Menu").setWidth(400);
ui.showSidebar(html);
}else{
ui.createMenu('Custom Menu')
.addItem("Do something", 'doIt')
.addToUi();
var html = HtmlService.createHtmlOutputFromFile('index2')
.setTitle("Mailmerge Menu").setWidth(400);
ui.showSidebar(html);
}
}
function authorize(){
SpreadsheetApp.openById('0AnqSFd3iikE3dDRlSC05ZTNxb2xORzNnR3NmMllyeUE');
UserProperties.setProperty('author','yes');
var ui = DocumentApp.getUi();
var html = HtmlService.createHtmlOutput('Authorization complete<br>Thanks<br><br>please refresh your browser').setTitle("Confirmation").setWidth(400);
ui.showSidebar(html);
}
function doIt(){
//
}
<div>
<style>
body{
font-family : verdana,arial,sans-serif;
font-size : 10pt;
background : beige;
padding : 10px;
}
#content{
margin-left:30px;
margin-top:30px;
}
</style>
<BODY LANG="fr-BE">
If you open this document for the first time please run the authorization process from the custom menu<br><br>
Thank you
<br>
</div>
<div>
<style>
body{
font-family : verdana,arial,sans-serif;
font-size : 10pt;
background : beige;
padding : 10px;
}
#content{
margin-left:30px;
margin-top:30px;
}
</style>
<BODY LANG="fr-BE">
Do what you have to do...
<br>
</div>