【发布时间】:2016-12-13 11:25:52
【问题描述】:
我有一个可以工作的应用程序,但今天它决定中断,所以我认为 Google 已经做出了一些改变。 CSV 数据被传递给我的函数,然后上传文件并将其转换为谷歌表格格式(这就是它所做的)
我正在使用 JS,文档中没有关于如何使用 V3 进行操作的示例。我已经读过,您只需指定所需的 mimeType,API 将为您完成,而不是在客户端的请求参数中运行 'conver':true。
这里是它在文档中声明的地方 ->
https://developers.google.com/drive/v3/web/migration#other_changes
现在通过在资源正文中设置适当的目标 mimeType 来请求导入到 Google Docs 格式,而不是指定 ?convert=true。
这是我现在正在查看的代码。每当我将 mimeType 保留为 'application/vnd.google-apps.spreadsheet' 时,它都会返回 400 error
gapiService.uploadCSVToGoogleSheet =function(data, sheetTitle) {
// create file
cnsl("in gapiService.uploadCSVToGoogleSheet()!!!", "start");
gapi.client.load('drive', 'v3',
upload
);
function upload (){
var fileData = new Blob(data, {type: "text/csv-creation", fileName: "testName"});
const boundary = '-------314159265358979323846';
const delimiter = "\r\n--" + boundary + "\r\n";
const close_delim = "\r\n--" + boundary + "--";
var reader = new FileReader();
reader.readAsBinaryString(fileData);
reader.onload = function (e) {
console.log("loaded reader ");
console.log(contentType);
var metadata = {
'name': sheetTitle + "-" + getCurrentDate(),
'mimeType': 'application/vnd.google-apps.spreadsheet'
};
var base64Data = btoa(reader.result);
var multipartRequestBody =
delimiter +
'Content-Type: application/json\r\n\r\n' +
JSON.stringify(metadata) +
delimiter +
'Content-Type: ' + contentType + '\r\n' +
'Content-Transfer-Encoding: base64\r\n' +
'\r\n' +
base64Data +
close_delim;
// POST INFO
var request = gapi.client.request({
'path': '/upload/drive/v3/files',
'method': 'POST',
'params': {
'uploadType': 'multipart'
// 'convert': true
},
'headers': {
'Content-Type': 'multipart/mixed; boundary="' + boundary + '"'
},
'body': multipartRequestBody
});
request.execute(gapiService.afterFileInsert);
} //endof reader onload
}
function getCurrentDate() {
console.log("in get GetCurrentDATE");
var today = new Date();
var dd = today.getDate();
var mm = today.getMonth() + 1; //January is 0!
var yyyy = today.getFullYear();
if (dd < 10) {
dd = '0' + dd
}
if (mm < 10) {
mm = '0' + mm
}
today = mm + '_' + dd + '_' + yyyy;
return today;
};
// console.log(fileData, null, 0);
};
`
【问题讨论】:
标签: javascript google-api google-drive-api google-client google-api-js-client