Вот ссылка на образец электронной таблицы с 2 вкладками, одна для вывода моих данных, а другая для желаемого результата
Я импортирую текстовые данные в таблицы и мне нужно разделитьэто через определенную фиксированную ширину.Я знаю предел ширины столбца, в котором я пытаюсь определить разрывы столбцов , поскольку данные не будут шире, чем для каждого столбца, однако у него нет согласованного разделителя.
Я делал это ранее в Excel, используя следующий код VBA:
Workbooks.OpenText Filename:=sFileName, Origin:=437, StartRow:=41,
DataType:=xlFixedWidth, FieldInfo:=Array( _
Array(0, 1), _
Array(23, 1), _
Array(34, 1), _
Array(59, 1), _
Array(70, 1), _
Array(79, 1), _
Array(87, 1), _
Array(98, 1), _
Array(114, 1), _
Array(123, 1)), _
TrailingMinusNumbers:=True
У меня есть настройка кода для вставки текстового файла в рабочую книгу, и я попытался разделить, используя SLICE
функция, но она выдала ошибку, что диапазон имел ~ 4000 строк, по данным было 0 строк, поэтому он не мог сгенерировать.
function importTXTfromDrive() {
var fileName = Browser.inputBox("Enter the name of the text file in your
Google Drive to import (e.g. myFile.csv):");
var searchTerm = "title = '"+fileName+"'";
var files = DriveApp.searchFiles(searchTerm)
var csvFile = "";
while (files.hasNext()) {
var file = files.next();
if (file.getName() == fileName) {
csvFile = file.getBlob().getDataAsString();
break;
}
}
var csvData = Utilities.parseCsv(csvFile);
////var col1 = csvData.slice(23,1);
////This didn't work so I removed it for now
var ss = SpreadsheetApp.getActiveSpreadsheet();
if (ss.getSheetByName(fileName) != null){
Browser.msgBox("That file has already been opened");
return 0;
}
var create = ss.insertSheet(fileName);
create.getRange(1, 1, csvData.length,
csvData[0].length).setValues(csvData);
////create.getRange(1, 1, csvData.length,
////csvData[0].length).setValues(col1);
////This last line was a test in using the SLICE but gave an error
}