Pull csv into Google Sheets with basic authentication

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

I found this code that works, in addition to parsing csv, cleaning and installing cells. I think there are a few errors, as this is old code, for example there clear.contents()should be clear.content().

And even with hard-coding the data in the sheets, I'm still trying 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);

}
0
source share
1 answer

, CSV , , . , parseCsvResponse \r . ,

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

-, , sheet -variable. :

var sheet = SpreadsheetApp.getActiveSheet();

, , script , . , ?

0

All Articles