Я искал метод, который может импортировать CSV в лист Google с базовой аутентификацией.Пока что все решения онлайн устарели.
Я следовал методу, найденному здесь: https://gist.github.com/jmodjeska/b0af2372c75c903700aeca4afb1fd56f
Который в основном делает это:
// Helper function: generate a random number for a cache busting token
function cacheBust() {
return Math.floor((Math.random() * 100000) + 1);
}
// Helper function: parse the CSV response
function parseCsvResponse(csvString, ignoreHeaders) {
var retArray = [];
var strLines = csvString.split(/\n/g);
startLine = ignoreHeaders ? 1 : 0;
for (var i = startLine; i < strLines.length; i++) {
var line = strLines[i];
if (line != '') {
retArray.push(line.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/));
}
}
return retArray;
}
// Main function: retrieve the CSV and poppulate the data in-place
function populateSheetWithCSV(foo, csvUrl, base64pw, ignoreHeaders, bustCache) {
var url = cacheBust ? csvUrl .concat(cacheBust()) : csvUrl;
var resp = UrlFetchApp.fetch(url, { headers: {'Authorization': 'Basic '.concat(base64pw) }, muteHttpExceptions:true});
var csvContent = parseCsvResponse(resp.getContentText(), ignoreHeaders);
return csvContent;
}
Затем я вызываю метод, отбрасывая его в ячейку A1:
=populateSheetWithCSV("Any Value", "https://csv-url", "base64pw", TRUE, TRUE)
Ошибка, которую я получаю в электронной таблице при вставке формулы: The server does not support the functionality needed to fulfill this request.</u></p><hr class="line"><h3>Apache Tomcat/8.5.11
Обновление 2: в комментарии пользователя я пытаюсь жестко закодировать имя пользователя, пароль и URL-адрес в фактическомМетод populateSheetWithCSV (первая часть кода остается неизменной):
// Main function: retrieve the CSV and poppulate the data in-place
function populateSheetWithCSV(foo, ignoreHeaders) {
var USERNAME = PropertiesService.getScriptProperties().getProperty('test');
var PASSWORD = PropertiesService.getScriptProperties().getProperty('test');
var url = PropertiesService.getScriptProperties().getProperty('https://csv-url-redacted');///////
var headers = {
"Authorization" : "Basic " + Utilities.base64Encode(USERNAME + ':' + PASSWORD)
};
var params = {
"method":"GET",
"headers":headers
};
var resp = UrlFetchApp.fetch(url, params);
var csvContent = parseCsvResponse(resp.getContentText(), ignoreHeaders);
return csvContent;
}
Я получаю сообщение об ошибке: Attribute provided with no value: url (line 33).
, используя этот второй метод.Строка 33 - это "var resp = ...
"