如何将'field'属性添加到JavaScript中的Google Drive API v3调用中?

问题描述:

tl; dr我是JavaScript和Google Apps脚本的新手,我不知道如何将'fields'属性添加到Google Drive v3 API调用中。 (halp plz?)如何将'field'属性添加到JavaScript中的Google Drive API v3调用中?

作为较大项目的一部分,我尝试使用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码截断服务器响应:{“错误”:{“错误”:[{“域”: “global”,“reason”:“required”,“message”:“这个方法需要'fields'参数...(使用muteHttpExceptions选项来检查完整响应)(行xxxx,文件”xxxx“)

我用其他编程语言找到答案,但无法将其转换为Google Apps Script/JavaScript。请参阅字段上一个回答:Google Drive API v3 Migration。您能否告诉我在API调用中添加'fields'属性以请求'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()); 
    } 
} 
+0

其他链接我coudn't后,由于低声望得分:https://developers.google.com/drive/v2/reference/permissions/getIdForEmail,HTTPS: //developers.google.com/drive/v3/web/migration, https://developers.google.com/drive/v3/reference/about/get – C02

我不记得的副手,如果谷歌将在这里接受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() 
    } 
}); 
+0

谢谢!在这种情况下,解决方案是通过GET请求使用url = url +'?fields = user/permissionId'。 – C02