如何在JavaScript中为Google Drive API v3调用添加“字段”属性?

问题描述 投票:-1回答:1

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());
  }
 }
javascript google-apps-script google-drive-sdk google-oauth2
1个回答
0
投票

我不记得谷歌是否会在这里接受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()
  }
});
© www.soinside.com 2019 - 2024. All rights reserved.