Google电子表格,使用Google脚本授予用户权限

问题描述 投票:0回答:1

我的目标:

每次创建新电子表格时,它都应自动将“ [email protected]”作为编辑者的权限。

研究:

  function myFunction() {
  var ss = SpreadsheetApp.getActiveSpreadsheet()
  ss.addEditor('[email protected]');
  }

问题:我实际上是在使用硒自动化来创建电子表格,然后使用gspread从中读取值,但问题是gspread仅读取与服务帐户共享的电子表格...

我尝试手动转到工具>脚本编辑器并运行上面的程序,它正常工作。但是当创建了一个新的电子表格并且我运行了相同的程序却没有用。

结论:硒每次创建新的电子表格时,都应自动将其共享到服务帐户。

selenium google-apps-script google-sheets gspread
1个回答
1
投票

如果创建后续电子表格,并假设您创建的文件在特定文件夹中,则以下代码将帮助您列出文件(这在脚本中是可选的,但可能有用)并同时将它们共享到指定的电子邮件。您可以从电子表格中创建的菜单(My Files)运行脚本,也可以设置触发器以在特定的时间/日期自动运行脚本:

因此,您需要:

   // ---------- Menu ----------
function onOpen() {
  var ui = SpreadsheetApp.getUi();
  ui.createMenu('My Files')
  .addItem('List & Add Permission', 'ListFilesandAddEditor')
  .addToUi();
}

function ListFilesandAddEditor() {

  var folder = DriveApp.getFolderById('FOLDER ID GOES HERE');  
  var sheetId = "SPREADHSEET ID GOES HERE";
  var ss = SpreadsheetApp.openById(sheetId);

  // specify the sheet to write the DATA, here it's Sheet1

  var sheet = ss.getSheetByName("Sheet1"); 
  sheet.getRange("A2:B").clear();

  var output = [];
  var file;
  var name;
  var link;
  var fileId;
  var contents = folder.getFiles();
  while(contents.hasNext()) {
    file = contents.next();    
    data = [
      name =  file.getName(),
      link =  file.getUrl(),
      fileId = file.getId(),
      DriveApp.getFileById(fileId).addEditor('[email protected]'),
    ];

    output.push([name, link]);

    // write data to the sheet  
    sheet.getRange(2, 1, output.length, output[0].length).setValues(output);  
  }  
};
© www.soinside.com 2019 - 2024. All rights reserved.