如何使用Google表格API + Javascript更新电子表格

时间:2016-02-23 11:06:29

标签: javascript jquery google-sheets google-spreadsheet-api

我有一个小型的javascript网站,可以从我的Google电子表格中获取数据,并将此数据显示给最终用户。我还想最终更新这个电子表格(例如插入一些行),但我完全坚持了它。

要从工作表中检索数据,请使用this document。它还包含有关更新电子表格的一些信息,但我不确定这是否有效。 我试过了:

  1. jQuery $ .post(...)创建一个POST请求,如文档中所述,但没有成功)
  2. 使用Postman app创建请求 - 获取“找不到页面”回复
  3. 任何人都可以帮我解决这个问题吗? :'(

1 个答案:

答案 0 :(得分:3)

要使用How can I set a listener inside a RecyclerView Header Decor?更新Google电子表格,您需要使用JavaScript

以下是更新电子表格的代码

function updateFile(fileId, fileMetadata, fileData, callback) {
    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) {
        var contentType = fileData.type || 'application/octet-stream';
        var base64Data = btoa(reader.result);
        var multipartRequestBody =
            delimiter +
            'Content-Type: application/json\r\n\r\n' +
            JSON.stringify(fileMetadata) +
            delimiter +
            'Content-Type: ' + contentType + '\r\n' +
            'Content-Transfer-Encoding: base64\r\n' +
            '\r\n' +
            base64Data +
            close_delim;

        var request = gapi.client.request({
            'path': '/upload/drive/v3/files/' + fileId,
            'method': 'PATCH',
            'params': {
                'uploadType': 'multipart',
                'alt': 'json'
            },
            'headers': {
                'Content-Type': 'multipart/mixed; boundary="' + boundary + '"'
            },
            'body': multipartRequestBody
        });
        if (!callback) {
            callback = function(file) {
                console.log(file)
            };
        }
        request.execute(callback);
    }
}

您可以使用以下代码来调用updateFile函数。

var blob = new Blob(['Cell Text 1,Cell Text 2'],{contentType:'text/plain'});
updateFile(SHEET_ID,'',blob,function(){
    alert("Updated document");
})