Pull csv to Google Sheets with basic authentication

99封情书 提交于 2019-12-04 06:22:37

问题


I need to pull a csv from a URL that requires basic auth.

I have found this code that works, apart from parsing the csv, clearing and setting the cells. I think there is a few bugs as it is old code, such as clear.contents() should be clear.content().

And even with hard coding the data in where sheets is, im still struggling to get it to work, has anyone else found a solution?:

// this function assumes the CSV has no fields with commas,
// and strips out all the double quotes
function parseCsvResponse(csvString) {
    var retArray = [];

    var strLines = csvString.split(/\n/g);
    var strLineLen = strLines.length;
    for (var i = 0; i < strLineLen; i++) {
        var line = strLines[i];
        if (line != '') {
            retArray.push(line.replace(/"/g, "").split(/,/));
        }
    }

    return retArray;
}

function populateSheetWithCSV(sheet, csvUrl, user, pw) {

    // request the CSV!
    var resp = UrlFetchApp.fetch(csvUrl, {
        headers: {
            // use basic auth
            'Authorization': 'Basic ' + Utilities.base64Encode(user + ':' + pw, Utilities.Charset.UTF_8)
        }
    });

    // parse the response as a CSV
    var csvContent = parseCsvResponse(resp.getContentText());

    // clear everything in the sheet
    sheet.clearContents().clearFormats();

    // set the values in the sheet (as efficiently as we know how)
    sheet.getRange(1, 1, csvContent.length /* rows */, csvContent[0].length /* columns */).setValues(csvContent);

}

回答1:


Well, as I haven't seen your CSV file, it's not that easy to predict where things goes wrong. However, I found that changing the regular expression in the parseCsvResponse method to include \r fixed the problem for me. Thus, the line reads

var strLines = csvString.split(/\n|\r/g);

Secondly, I can't see where you get the sheet-variable from. I used the following line of code:

var sheet = SpreadsheetApp.getActiveSheet();

Lastly, I noticed that the script requested authorization when I tried to run it. I assume you have granted the permissions required?



来源:https://stackoverflow.com/questions/28551543/pull-csv-to-google-sheets-with-basic-authentication

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!