우선 포기 : 필자는 합리적인 경험을 가진 프로그래머이지만 Javascript는 매우 녹슨하고 Google Script는 아주 새롭다. 스프레드 시트의 모든 시트를 통한 간단한 검색
나는- 가 주어진 번호 (태그) 각 시트에 지정된 열을 검색하는 함수를 작성하는 것을 시도하고있다. 는 그 번호를 찾으면
- 함수가 "= 부모로서 세포 (체결 될 문자열
- 복귀 (그것을 셀 값을) 완성 된 문자열
에서 주변 셀로부터의 다른 정보를 저장할 태그) "정보를 사냥하고 수동으로 복사하는 번거 로움을 덜어줍니다.
몇 가지 다른 질문을 살펴 보았습니다. 아래 소스에 대한 내 의견을 참조하십시오.
How do I search Google Spreadsheets? -이 질문에 대한 첫 번째 답변은 간단했지만 Google 스크립트 관련 코드를 통합하지 않았습니다.
Find value in spreadsheet using google script -이 솔루션은 비슷한 솔루션을 찾는 것처럼 보였으므로 첫 번째 대답에서 코드를 적용하려고 시도했습니다. 다음은
가 작동합니다 것처럼 그것은 보인다 소스 2에서 내 적응 코드입니다,하지만 난 그것을 실행할 때 오류가 발생하는,TypeError: Cannot read property "0" from undefined. (line 19).
TLDR는 : 나를 통해 검색이 코드를 수정 도와주세요 스프레드 시트. 19 번 줄에 오류가 있습니다.
수정 : 내 질문 끝에 올바른 코드를 추가했습니다. 내가이 컴파일러 버릇에 비난합니다 :)
function parent(tag) {
var sh = SpreadsheetApp.getActiveSpreadsheet();
var titleRow = 6;
var parentRow = 0;
//create array with sheets in active spreadsheet
var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();
//loop through sheets to look for value
for (var i in sheets) {
SpreadsheetApp.setActiveSheet(sheets[i])
var sheet = sh.getActiveSheet();
var data = sheets[i].getDataRange().getValues();
//loop through data on sheet
for (var r=1;r<=data.length;++r) {
if(typeof(data[r][0])!=="undefined") { //<-- This is where the error occurs
if (data[r][0] == tag) {
parentRow = r;
// Populate Genes
var result = "#" + tag + "(";
var z = 0;
for (var j=8; j<12; j++) {
if (data[titleRow][j] == "Genotype") {
if (z==0) {
result = result + data[titleRow-1][j];
z=1;
}
else {
result = result + "-" + data[titleRow-1][j];
}
}
}
result = result + ") ";
// Populate Genotype
var z = 0;
for (var j=8; j<12; j++) {
if (data[titleRow][j] == "Genotype") {
if (z==0) {
result = result + "" + data[dataRow][j];
z=1;
}
else {
result = result + "/" + data[dataRow][j];
}
}
}
// result = result + " " + dataRow;
return result;
}
}
}
}
}
을 신인 실수, 다음 (문제를 일으키는 된 이름이 변수 포함) 수정 된 코드입니다.
function parent(tag) {
var sh = SpreadsheetApp.getActiveSpreadsheet();
var titleRow = 6;
var dataRow = 0;
//create array with sheets in active spreadsheet
var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();
//loop through sheets to look for value
for (var i in sheets) {
SpreadsheetApp.setActiveSheet(sheets[i])
var sheet = sh.getActiveSheet();
var data = sheets[i].getDataRange().getValues();
//loop through data on sheet
for (var r = 0; r < data.length; r++) { //<-- Here's the fix
if(typeof(data[r][0])!=="undefined") {
if (data[r][0] == tag) {
dataRow = r;
// Populate Genes
var result = "#" + tag + "(";
var z = 0;
for (var j=8; j<12; j++) {
if (data[titleRow][j] == "Genotype") {
if (z==0) {
result = result + data[titleRow-1][j];
z=1;
}
else {
result = result + "-" + data[titleRow-1][j];
}
}
}
result = result + ") ";
// Populate Genotype
var z = 0;
for (var j=8; j<12; j++) {
if (data[titleRow][j] == "Genotype") {
if (z==0) {
result = result + "" + data[dataRow][j];
z=1;
}
else {
result = result + "/" + data[dataRow][j];
}
}
}
// result = result + " " + dataRow;
return result;
}
}
}
}
}
좋아요. 행 = 2에서 시작하므로 I = 1에서 시작하겠습니다. 그러나 비교 연산자를 '<='에서 '<'로 변경 했습니까? –