tl; dr我是JavaScript和Google Apps脚本的新手,我不知道如何将'fields'属性添加到Google Drive v3 API调用中。 (halp plz?)
作为大型项目的一部分,我尝试使用Google Apps脚本,服务帐户和the OAuth 2 sample from Google修改G Suite域中的文件权限。我已经为Drive API v3编写了此函数,以从Drive API v2替换getIdForEmail。但是,API v3需要'fields'查询参数来请求特定字段。
运行脚本时给出的错误是
消息详细信息请求https://www.googleapis.com/drive/v3/about返回代码400失败。截断服务器响应:{“error”:{“errors”:[{“domain”:“global”,“reason”:“required”,“message”:“'field '这个方法需要参数...(使用muteHttpExceptions选项检查完整响应)(第xxxx行,文件“xxxx”)
我用不同的编程语言找到了答案,但无法将其转换为Google Apps脚本/ JavaScript。请参阅上一个答案中的字段:Google Drive API v3 Migration。您能否告诉我添加'fields'属性以在API调用中请求'permissionId'的正确方法?
function getPermissionIdForEmail(userEmail) {
var service = getService(userEmail);
if (service.hasAccess()) {
var url = 'https://www.googleapis.com/drive/v3/about';
var options = {
'method': 'get',
'contentType': 'application/json'
};
var response = UrlFetchApp.fetch(url, {
headers: {
Authorization: 'Bearer ' + service.getAccessToken()
}
});
var result = JSON.parse(response.getContentText());
Logger.log('getPermissionIdForEmail result: %s', JSON.stringify(result, null, 2));
} else {
Logger.log('getPermissionIdForEmail getLastError: %s', service.getLastError());
}
}
我不记得谷歌是否会在这里接受POST请求,如果它们可以作为请求有效载荷传递:
var response = UrlFetchApp.fetch(url, {
headers: {
Authorization: 'Bearer ' + service.getAccessToken()
},
payload: {
fields: 'kind,user,storageQuota'
}
});
或者如果它必须是GET请求,您可以将参数直接附加到url:
url = url+'?fields=kind,user,storageQuota'
var response = UrlFetchApp.fetch(url, {
headers: {
Authorization: 'Bearer ' + service.getAccessToken()
}
});