Google apps script 通过应用程序脚本中的URL获取调用Drive REST API版本3只提供默认属性
我正在通过应用程序脚本中的URL获取调用Drive REST API版本3。我正在调用文件列表方法并查询文件。查询正在工作,但我只获得api响应中文件的默认属性。如果我使用fields参数来获取更多字段,它将被忽略Google apps script 通过应用程序脚本中的URL获取调用Drive REST API版本3只提供默认属性,google-apps-script,google-drive-api,Google Apps Script,Google Drive Api,我正在通过应用程序脚本中的URL获取调用Drive REST API版本3。我正在调用文件列表方法并查询文件。查询正在工作,但我只获得api响应中文件的默认属性。如果我使用fields参数来获取更多字段,它将被忽略 var retVal =[]; var baseUrl = "https://www.googleapis.com/drive/v3/files"; var token = ScriptApp.getOAuthToken(); var options
var retVal =[];
var baseUrl = "https://www.googleapis.com/drive/v3/files";
var token = ScriptApp.getOAuthToken();
var options = {
method: "GET",
headers: {"Authorization": "Bearer " + token},
}
var maxResults = 100;
var params = {
q: query,
pageSize: maxResults,
fields: 'nextPageToken,incompleteSearch,files(kind,id,name,mimeType,starred,trashed)',
};
do {
var queryString = Object.keys(params).map(function(p) {
return [encodeURIComponent(p), encodeURIComponent(params[p])].join("=");
}).join("&");
var apiUrl = baseUrl + "?" + queryString;
Logger.log(apiUrl);
var response = JSON.parse(UrlFetchApp.fetch( apiUrl,
options).getContentText());
//Logger.log(response);
response.files.forEach(function(fileObj) {
retVal.push(fileObj);
})
params['pageToken'] = response.nextPageToken;
} while (params.pageToken);
Logger.log(retVal);
return retVal
编码查询:
来自API的测试结果:[{kind=drive#file,name=Kopie von test/Blub 33,id=1otbd78bn7r7xjo6teayzme5cjwdgrmt,mimeType=application/json},{kind=drive#file,name=test/Blub 33,id=12IpttBvSY-Z31ueNqG_dmb46dxudh5cl,mimeType=application/json},{kind=drive#file,name=test/Blub/Blub 33,id=1fkyqdftvsy-Z31ueNqG#-jjjjjjjjv4; 4vjson,id=2xjjb4jjjjjjjjjjjj]
有人能帮助解释为什么api忽略字段参数吗?尝试替换
&计算查询字符串值时,使用和
var queryString = Object.keys(params).map(function(p) {
return [encodeURIComponent(p), encodeURIComponent(params[p])].join("=");
}).join("&");
嗨,阿米特,谢谢你的回答。如果我按照建议更改源代码,我会得到一个http 400错误,返回的值无效。问题是,我没有从api返回的对象中获取“fields”参数I(fields:'nextPageToken,incompleSearch,files(kind,id,name,mimeType,starred,trashed)')的命名属性。您可以共享您的查询吗?当然:var query=“name contains'Test 33';我认为querz不可能是问题所在,因为我从api获得了结果,我只是没有得到文件项的所有字段…没有人可以帮助吗?尝试使用字段“*”查看是否所有字段都返回。