Google脚本表创建(保护问题)

时间:2017-02-06 18:35:40

标签: google-sheets google-spreadsheet-api protection

好的,stackoverflow。

我会直接跳到我的问题中。我有一个主要的工作簿,其中包含大量信息(通过查询/导入范围)将正确的信息提供给几个单独的工作簿。我每周更新主工作簿,并使用以下代码每周为各个工作簿创建新工作表:

function onOpen() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var pasteSheet = [ {name: "Paste Sheet", functionName: "copySheet"}];
ss.addMenu("Copy to Spreadsheets", pasteSheet);
}

function copySheet() {
var source = SpreadsheetApp.getActiveSpreadsheet();
var sheet = source.getSheets()[0];
var sheet2 = source.getSheets()[1];
var sourceFile = DriveApp.getFileById(source.getId());
var sourceFolder = sourceFile.getParents().next();
var folderFiles = sourceFolder.getFiles();
var thisFile; 

while (folderFiles.hasNext()) {
  thisFile = folderFiles.next();
  if (thisFile.getName() !== sourceFile.getName()){
    var currentSS = SpreadsheetApp.openById(thisFile.getId());
    sheet.copyTo(currentSS);
    sheet2.copyTo(currentSS);
    currentSS.getSheets()[currentSS.getSheets().length-2].setName('W6');
    currentSS.getSheets()[currentSS.getSheets().length-1].setName('W6 ISSUES');
  }    
};    
}

此代码非常适合在每个工作簿中创建两个新工作表。

我的问题:在运行此脚本时,我一直在尝试不同的方法来尝试包含保护。我需要的是保护单张纸(W6和W6问题)。 W6的第一个应该完全受到保护,但范围A3:A20除外,我需要允许各个表的所有者进行编辑。 ' W6问题'应该完全受到保护。

我将如何实现这一目标?任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

可在此处找到保护信息:https://developers.google.com/apps-script/reference/spreadsheet/protection

以下是保护“W6问题”的示例

var W6issues = currentSS.getSheets()[currentSS.getSheets().length-1].setName('W6 ISSUES');
var protection = W6issues.protect().setDescription('Sample protected sheet');

对“W6”执行相同操作,然后对您不希望受保护的范围使用.remove(),https://developers.google.com/apps-script/reference/spreadsheet/protection#remove