弹出授权码DocumentApp - Google Apps脚本

时间:2013-09-25 12:21:36

标签: google-apps-script google-drive-api google-apps

我们创建了一个用于邮件合并目的的Google应用脚本。我们打开一个Google文档,然后打开一个脚本,用于选择带地址的电子表格,选择电子表格后我们需要授权代码。我们可以在脚本编辑器中进行授权,但是会为每个邮件合并类型复制此文档,因此最终用户需要进行授权。那么这就是问题发生的地方。最终用户只会收到消息。

“遇到错误:执行该操作需要授权。”

好的,但是通常由网络应用程序显示的弹出窗口不会出现。所以用户根本无法授权。我们不能要求我们的最终用户转到脚本编辑器并运行代码编辑器,这样他们就可以进行授权。

我们可以在脚本中手动弹出授权码吗?

1 个答案:

答案 0 :(得分:7)

以下是我在文档嵌入式脚本中使用的例程,该脚本仅使用普通的GAS服务,尝试查看它是否符合您的要求。

code.gs:

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(){
  //
}

index1.html:

<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>

index2.html:

<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>