TSV 파일을 가져 와서 내용을 Google 스프레드 시트로 복사하는 Google 스크립트가 있습니다. (코드는 광산이 아닙니다. 검색 한 후 다른 사람의 프로젝트에서 복사했습니다.)Google 스크립트 - arrayofarrays - 잘못된 범위 너비
약간의 조작 후 스크립트가 훌륭하게 작동하지만 "잘못된 범위 너비가 계속 1이지만 6 (줄 46, 파일"테스트 ") 오류 여야합니다.
자, 수입 점점 TSV 파일은 기본적으로 6 열로 구성된 목록, 즉이다 :
fruits vegetables cars countries colors names
pear carrot ford nicaragua yellow frank
어떤 방법 arrayofarrays 작품에 독서와 같은 오류에 대한 인터넷 검색을 수행 한 후, 나는 결론을 내렸다했습니다 문제는 가져 오기/출력 프로세스의 어딘가에 마지막 빈 행이 추가된다는 것입니다. 즉 : 6 열 2 행 대신에 6 열 2 행, 빈 열 1 행 3 행이 있습니다.
분명히 arrayofarrays는 모든 행이 정확히 동일한 너비가되어야합니다.
내가 알 수있는 한,이 여분의 열은 소스 파일에 없습니다. 또한 소스 파일을 수정할 수 없으므로 스크립트 자체로 수정해야합니다.
내가 말했듯이, 스크립트는 작동하지만, 다음과 같이하고 싶습니다. 스크립트에서 오류에 대한 이메일을받지 못하게하고, b)이를 수정하는 방법을 이해합니다.
제안 사항?
미리 감사드립니다.
코드는 다음과 같습니다 (일부 수정 된 줄이 있는데, 명확하게 작동하지 않지만 수정을 위해 남겨 두었습니다).
function getFileIDFromName(fileName) {
// Return the file ID for the first
// matching file name.
// NB: DocsList has been deprecated as of 2014-12-11!
// Using DriveApp instead.
var files = DriveApp.getFiles();
while (files.hasNext()) {
var file = files.next();
if (file.getName() === fileName) {
return file.getId();
}
}
return;
}
function getTsvFileAsArrayOfArays(tsvFileID) {
// Read the file into a single string.
// Split on line char.
// Loop over lines yielding arrays by
// splitting on tabs.
// Return an array of arrays.
var txtFile = DriveApp.getFileById(tsvFileID),
fileTextObj = txtFile.getAs('text/plain'),
fileText = fileTextObj.getDataAsString(),
lines = fileText.split('\n'),
lines2DArray = [];
lines.forEach(function (line) {
lines2DArray.push(line.split('\t'));
});
return lines2DArray;
}
function writeArrayOfArraysToSheet(tsvFileID) {
// Target range dimensions are determine
// from those of the nested array.
var sheet = SpreadsheetApp.getActiveSheet(),
arrayOfArrays = getTsvFileAsArrayOfArays(tsvFileID),
dimensions = {rowCount: Math.floor(arrayOfArrays.length),
colCount: Math.floor(arrayOfArrays[0].length)},
targetRng;
sheet.clearContents();
targetRng = sheet.getRange(1, 1,
dimensions.rowCount,
dimensions.colCount);
// .setValues(arrayOfArrays);
//targetRng = sheet.getRange(1, 1, arrayOfArrays.length, 6).setValues(arrayOfArrays);
//targetRng.setValues(arrayOfArrays);
targetRng.setValues(arrayOfArrays);
}
function runTsv2Spreadsheet() {
// Call this function from the Script Editor.
var fileName,
fileID,
file;
//fileName = Browser.inputBox('Enter a TSV file name:',
// Browser.Buttons.OK_CANCEL);
//fileID = getFileIDFromName(fileName);
//Logger.log(fileID)
fileID = "0B-9wMGgdNc6CdWxSNGllNW5FZWM"
if (fileID) {
writeArrayOfArraysToSheet(fileID);
}
}