我将脚本绑定到工作表,我需要使其中一个脚本始终作为我的所有者执行

时间:2019-06-21 18:36:59

标签: google-apps-script google-sheets

我有一个包含一打功能的脚本,可用于工作中的各种任务。它一直都运行良好,我从未将其部署为Web应用程序或API(而且我也从未能够理解它们是什么或如何使用它们)。 现在,我为有问题的工作表添加了一些保护。一个特定功能将值添加到受保护的范围。保护生效后,由于我的员工没有明确的手动更改这些保护范围的权限,因此不允许我的员工执行相关功能。 (允许通过脚本进行更改)。

所以我的问题有点像是GAS的新手,我应该如何使这个特定功能每次都像我一样执行?

P.S:我对此主题做了很多研究,但老实说我无法弄清楚。我知道我需要一个叫做doGet或doPost的东西,但我不知道它们是什么,如何使用它们或做什么。查找它们只会让我更加困惑。

将感谢您提供的任何帮助或指导。我以为这不是什么大问题,但最近3个小时我一直在处理它,这让我发疯。

函数的外观如下:(C列是受保护的范围,您可以看到某些代码最终在某个时候越过了它)

function jun() {
  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.getRange('E2:AG2').activate();
  spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Expenses 2019'), true);
  var sheet = spreadsheet.getActiveSheet();
  sheet.getRange(1, 1, sheet.getMaxRows(), sheet.getMaxColumns()).activate();
  sheet = spreadsheet.getActiveSheet();
  sheet.getRange(1, 1, sheet.getMaxRows(), sheet.getMaxColumns()).createFilter();
  spreadsheet.getRange('B1').activate();
  var criteria = SpreadsheetApp.newFilterCriteria()
  .setHiddenValues(['1', '2', '3', '4', '6', '7', '8', '9', '10', '11', '12', ''])
  .build();
  spreadsheet.getActiveSheet().getFilter().setColumnFilterCriteria(2, criteria);
  spreadsheet.getRange('A1').activate();
  criteria = SpreadsheetApp.newFilterCriteria()
  .setHiddenValues(['Total'])
  .build();
  spreadsheet.getActiveSheet().getFilter().setColumnFilterCriteria(1, criteria);
  spreadsheet.getRange('245:245').activate();
  spreadsheet.getActiveSheet().insertRowsBefore(spreadsheet.getActiveRange().getRow(), 1);
  spreadsheet.getActiveRange().offset(0, 0, 1, spreadsheet.getActiveRange().getNumColumns()).activate();
  spreadsheet.getRange('\'EXPENSERIZER\'!E2:AG2').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getActiveSheet().getFilter().remove();
  spreadsheet.setActiveSheet(spreadsheet.getSheetByName('EXPENSERIZER'), true);
  spreadsheet.getRange('C11').activate();
};

0 个答案:

没有答案