with IMPORTRANGE SpreadSheet A、B、C 等 请求访问权限以从 SpreadSheet 1 中提取数据(图 1)。示例:
=IMPORTRANGE("SpreadSheet 1"; "Sheet!A1")
我想从电子表格A中删除访问(撤销权限),以从电子表格1中提取数据(图2)撤消允许对图片1的访问,以撤销授予电子表格 A 从电子表格 1 提取数据的权限
这只是一个简化的例子,因为实际上我有超过200个电子表格连接到1个(实际上是2个)数据库电子表格,这就是为什么我想撤销权限,有多少个电子表格可以访问一个电子表格我已经多次达到这个限制了
真实电子表格的图片,以帮助理解我的部分代码,脚本将在请求访问的同一电子表格上运行
我可能是错的,但我有一个旧脚本,我认为曾经有用
function removePermission()
{
const ss = SpreadsheetApp.getActiveSpreadsheet();
const ss_c = ss.getSheetByName('Config');
var currentSheetId = ss.getId();
var targetId = "";
if (ss_c.getRange("B6").getValue() == 1)
{
targetId = ss_c.getRange("D6").getValue();
}
else if (ss_c.getRange("B6").getValue() == 2)
{
targetId = ss_c.getRange("D7").getValue();
}
var currentFile = DriveApp.getFileById(currentSheetId);
var targetFile = DriveApp.getFileById(targetId);
var targetPermissions = targetFile.getPermissions();
for (var i = 0; i < targetPermissions.length; i++)
{
var permission = targetPermissions[i];
if (permission.getType() == "user" && permission.hasAccess())
{
currentFile.removeEditor(permission.getEmail()); // or the next one
// targetFile.removeEditor(permission.getEmail());
}
}
}
但现在它显示错误TypeError: targetFile.getPermissions is not a function
所以我尝试用我搜索的内容进行修改
function test()
{
const ss = SpreadsheetApp.getActiveSpreadsheet();
const ss_c = ss.getSheetByName('Config');
var currentSheetId = ss.getId();
var targetId = "";
if (ss_c.getRange("B6").getValue() == 1)
{
targetId = ss_c.getRange("D6").getValue();
}
else if (ss_c.getRange("B6").getValue() == 2)
{
targetId = ss_c.getRange("D7").getValue();
}
var currentFile = DriveApp.getFileById(currentSheetId);
var targetFile = DriveApp.getFileById(targetId);
var targetEditors = targetFile.getEditors();
var currentEditors = currentFile.getEditors();
var activeUserEmail = Session.getActiveUser().getEmail();
for (var i = 0; i < targetEditors.length; i++) {
var editor = targetEditors[i];
var editorEmail = editor.getEmail();
// Check if the editor exists in the current file before removing
if (editorEmail !== activeUserEmail && currentEditors.some(e => e.getEmail() === editorEmail)) {
targetFile.removeEditor(editorEmail);
}
}
}
通过,但不起作用
我不熟悉编辑器在这种情况下的具体工作方式,并且搜索我找不到相关的问题和解决方案
我是所有者和唯一的用户,不确定,但它与文件而不是用户相关,感谢帮助,谢谢
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号