这是我的脚本,用于设置对gmail的“查看者”权限,并且我对其进行了改进,以通过“ expirationTime”将对gmail的“查看者”权限设置为。但是我遇到了两个大问题:
1 /脚本可以运行,但是我不知道要测试它是否可以与“ expirationTime”一起使用,因为如果我们手动设置到期时间,则ggsheet会在第二天23:59给您,因此我认为函数“ expirationTime” ”仅适用于该表格,这意味着您必须等到第二天才能测试,编辑v..v ..代码(如果可以的话)太长了。 所以我不知道代码是否与“ expirationTime”一起使用? (它仅已运行,我将其设置为下一个日期以进行测试)
2 /如果我的代码确实取得了成果,您能否让我理解如何在脚本中添加“ expirationTime”(因为它的概念满足了我的工作需求)以及快速对其进行测试的方法。
3 /我用currentime的更改分钟测试了很多次,但是“ expirationTime”似乎不起作用,但是为什么呢?它成功设置了查看器,但是“查看器”权限不能在该时间之后过期。
非常努力,谢谢您提供任何帮助。
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();
}
我期望为此脚本设置一个“ expirationTime”。
答案 0 :(得分:0)
正如我所见,您正在使用Google云端硬盘高级服务。但是有Google Drive API v2。
expirationTime
在v3中提供。 v3尚不适用于Google云端硬盘高级服务。
您可以使用OAuth2 for Apps Script和UrlFetchApp
来调用v3 API。