每次拒绝在我自己的谷歌脚本中授予权限

时间:2018-06-12 06:59:25

标签: javascript google-apps-script google-sheets

情况:

我已经把自己作为一个表格来进入我的工作时间。在某些情况下,我必须输入一些链接,并将其命名为linkname的一部分。所以我决定创建一个自定义菜单,我只需在提示符中发布链接,然后脚本会删除所需的名称并将其输入到我的工作表中。

现在这只在我的工作表中运行。猜猜没有必要发布这样的东西:)

解决我的问题:

我有一个主要工作表并且每周复制一次,因为一张工作表只能解决一周。我的脚本使我授予它权限,以便它可以在当前工作表上执行上述操作。但每次我复制工作表(所以每周),我必须再次授予权限。期待我的谷歌帐户看到授予权限让我头疼,因为有大量的条目授予权限:(

问题:

有没有办法保持开发人员模式以阻止此权限请求?

为什么我必须拥有自己脚本的高级权限?

function onOpen(e) {
  var menu = SpreadsheetApp.getUi().createMenu('Custom Menu');
      menu.addItem('Add Ticket', 'addTicket');
      menu.addItem('Rename to KW XX', 'renameDocument');
      menu.addToUi();
}

function addTicket() {
  var ui     = SpreadsheetApp.getUi(); // Same variations.
  var sheet  = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var myCell = sheet.getActiveCell();
  var result = ui.prompt(
      'Add Ticket',
      'Please enter Ticket-link:',
      ui.ButtonSet.OK_CANCEL);

  // Process the user's response.
  var button = result.getSelectedButton();
  var link   = result.getResponseText();
  
  if (button == ui.Button.OK) {
    var n        = link.lastIndexOf('/');
    var linkName = link.substring(n+1);
    var vals     = myCell.setValue('=HYPERLINK("' + link +  '";"' + linkName + '")');
  } else if (button == ui.Button.CANCEL) {
    // User clicked "Cancel".
    ui.alert('You cancled adding ticket.');
  } else if (button == ui.Button.CLOSE) {
    // User clicked X in the title bar.
    ui.alert('You closed the dialog. No ticket was inserted.');
  }
}

function renameDocument() {
  eval(UrlFetchApp.fetch('https://momentjs.com/downloads/moment-with-locales.js').getContentText());
  var sheet = SpreadsheetApp.getActive();
  var doc   = DocumentApp.getActiveDocument();
  moment.locale('de');
  var kw    = moment().format('ww');
  var name  = sheet.getName();
  sheet.setName('KW ' + kw);
}

1 个答案:

答案 0 :(得分:3)

我理解通过" sheet"你的意思是电子表格,也就是工作簿,文档和文件,因为在同一个电子表格上的几个工作表上使用脚本并不需要为每个工作表授权脚本,因为你看到了大量的条目授予权限"

另外我理解你的脚本是在一个绑定到电子表格的脚本项目上。

当我们制作电子表格的副本时,它将包含一个副本到与其绑定的脚本项目。新电子表格及其有限项目因为它们是不同的文件而且Google的政策是脚本项目提供了运行脚本的授权。

避免拥有相同代码的大量副本并且必须授权每个代码的方法是使用附加组件,这就是我投票将此问题作为{{3}的副本关闭的原因}

无论如何

的答案
  

有没有办法保持开发人员模式以阻止此权限请求?

开发附加组件

  

为什么我必须拥有自己脚本的高级权限?

由于未要求您向一个脚本授予权限,因此系统会要求您为每个副本授予权限。

值得注意的是,除了必须为每个副本授予权限之外,如果您对"您的脚本进行了更改"它只会在您编写它的脚本项目中,该更改不会被传播"复制品。

另一种方法是使用库,但您仍然必须为使用该库的每个脚本项目授予权限。

关于要在Google Chrome网上应用店发布的开发者费用,您可以在测试模式下运行您的加载项,但是您必须将每个文件添加到相应的列表中,这对于处理大量文件不是非常友好