如何使用和设置过期来设置权限共享?



这是我为gmail设置"查看器"权限的脚本,我改进了它以使用"过期时间"将"查看器"权限设置为Gmail。但我遇到了两个大问题:

1/脚本可以运行,但我不知道测试它是否适用于"过期时间",因为如果我们手动设置过期,默认 ggsheet 给你的是第二天 23:59,所以我认为函数"过期时间"仅适用于该表单,这意味着您必须等到第二天才能测试、编辑 v.。v..代码如果有效,则太长了。 所以我不知道代码是否适用于"过期时间"?(它只运行了,我将其设置为下一个日期以制作测试结果)

2/如果我的代码没有结果,你能让我了解如何在我的脚本中添加"过期时间"(因为它的概念满足了我的工作需求)以及快速测试它的方法吗?

3/我用当前 ime 的更改分钟多次测试它,但似乎"过期时间"不起作用,但为什么? 它成功地设置了查看器,但是,"查看器"权限在时间之后不会过期。

太难了,感谢您的任何评论提供帮助。

function SetViewer(){
var app = SpreadsheetApp.openById('1UfT0WriidphNwVhIMnnkOjMmkkg6jl2zIJ8xtqqR1Sg').getSheetByName('Sheet1');
var dataLength = getDataLength();  
var data = getSheetValues()  
for(var i = 1; i < dataLength; i++) {
if(data[i]["Viewers"] !== "OK")
continue;
var address = app.getRange(i+1,9).getValue();
Logger.log(address);
var openss = SpreadsheetApp.openByUrl(address);
var fileId = openss.getId();
var mail = app.getRange(i+1,2).getValue();
var pid = Drive.Permissions.insert(
{'role': 'reader', // writter, reader https://developers.google.com/drive/api/v3/reference/permissions
'type': 'user',
'value': mail,},
//'expirationTime': '2019-07-28T00:01:00+07:00'},
fileId,{'sendNotificationEmails': 'false' }   
);
Drive.Permissions.update(
{'role': 'reader', // writter, reader https://developers.google.com/drive/api/v3/reference/permissions
'type': 'user',
'value': mail,
'expirationTime': '2019-07-27T17:33:00+07:00'
},
fileId,''+pid.id
);
// DriveApp.getFileById(fileId).addViewer(mail);
}}
//var ss = SpreadsheetApp.openByUrl('YOU_SPREADSHEET_URL_HERE');
//var fileId = ss.getId();
//DriveApp.getFileById(fileId).addEditor('EDITOR_EMAIL_ADDRESS_HERE');
function getSheetValues() {
var sourceSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
var dataObject = sourceSheet.getDataRange().getValues(); // get every row value from the chosen sheet and put into an object
var aObject = {};
for(var i = 0; i < dataObject.length; i++) {
aObject[i] = dataObject[i];
for(var j = 0; j < aObject[i].length; j++) {
aObject[i][dataObject[0][j]] = dataObject[i][j];
}
}
return aObject;
}
function getDataLength() { //get total number of data
var sourceSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
var sourceData = sourceSheet.getDataRange().getValues();
return sourceData.length;
}
function onOpen() {
var ui = SpreadsheetApp.getUi();
// Or DocumentApp or FormApp.
ui.createMenu('QUẢN LÝ PHÂN QUYỀN')
.addItem('Set Viewer', 'SetViewer')
.addItem('Set Editor', 'SetEditor')
.addItem('Remove Viewer', 'RemoveViewers')
.addItem('Remove Editor', 'RemoveEditor')
.addToUi();
}

我的期望是为此脚本设置"过期时间"以供使用。

正如我所看到的,您使用Google云端硬盘高级服务。但是有谷歌驱动器API v2。

expirationTime在 v3 中提供。 v3 尚不适用于 Google 云端硬盘高级服务。

可以使用适用于应用的 OAuth2 脚本和UrlFetchApp来调用 v3 API。

您也可以尝试应用程序脚本驱动器v3库

最新更新