1

스크립트를 통해 데이터를 입력하려고 시도하여 첫 번째 빈 행을 찾고 첫 번째 빈 열을 찾아 해당 열에 데이터를 입력합니다. 각 열에는 정보를 삽입하는 몇 개의 열이 있으며, 해결해야하는 또 다른 문제가 있다는 것을 깨닫는 별도의 요청으로 이루어 지지만 아직받지 못했습니다. "메시지":Google 스프레드 시트 스크립트 - 속성 1.0을 읽을 수 없습니까?

var answer = e.parameter["value"] 
    var doc = SpreadsheetApp.openById(SCRIPT_PROP.getProperty("key")); 
    var sheet = doc.getSheetByName(e.parameter["sheet"]); 
    var row = sheet.getLastRow(); 
    var column = sheet.getLastColumn() 
    var range = sheet.getRange(row, 1, 1, column); 
    var data = range.getValues(); 

    for(var i = 1; i <= column; i++){ 
    if (data[1][i] == "" || data[1][i] == " "){ 
     sheet.getRange(1, i).setValue(answer); 
     break; 
    } 
    } 

나는 그것을 실행이 오류가 무엇입니까. "정의되지 않은에서"1.0 \ "속성 \을 읽을 수 없습니다를", "이름": "형식 오류를", "fileName에": "코드 (데이터베이스 매크로) ","LINENUMBER ": 107,"스택 ":"\ 문신 코드 (데이터베이스 매크로) : 107 (의 doPost

편집을 할 CODE :

for(var i = 1; i <= column; i++){ 
    if (data[i] == ""){ 
     sheet.getRange(row, i).setValue(answer); 
     break; 
    } 
    } 
+0

그래서 오스터틴은 "먼저 빈 행을 찾으십시오"라는 방법을 먼저 찾은 다음 그 행 (열)의 각 셀로 이동해야합니까? –

+0

@oserek 예! 알았어. –

+1

자바 스크립트 배열은 0이 아닌 1에서 시작합니다. 앱 스크립트 디버거를 사용하여 오류를 찾습니다. –

답변

1

난 당신이 공유하고있어 시트 범위 A1에서 첫 번째 빈 행 (셀 값)을 찾는 방법을 볼 수 있습니다. A10

https://docs.google.com/spreadsheets/d/12w3Xi2CsOQ7u0i6gB5T7SWhG5_Kkv_04UJOp2ouNpF0/edit?usp=sharing

function myFunction() { 
    var aa = SpreadsheetApp.getActiveSheet().getRange("A1:A10").getValues(); 
    var ui = SpreadsheetApp.getUi(); 
    var ix = null; 
    for(var i = 0 ; i < aa.length; i++){ 
    if(aa[ i ] == "") { ix = i; break; } 
    } 
    ui.alert("first empty row is: A" + (ix+1)); 
} 

HTH, 환호

1

귀하의 문제가 여기에있다 :

for(var i = 1; i <= column; i++){ 
    if (data[1][i] == "" || data[1][i] == " "){ // This i believe is your line 107 
     sheet.getRange(1, i).setValue(answer); 
     break; 
    } 
    } 
: 그래서 아래의 코드를 수정 @ZigMandel에서 언급 한 바와 같이

자바 스크립트 배열 인덱스는 0이 아닌 1에서 시작

this :

for(var i = 0; i < column; i++){ 
     if (data[0][i] == "" || data[0][i] == " "){ 
      sheet.getRange(1, i).setValue(answer); 
      break; 
     } 
     } 

귀하가받는 오류는이 진술 데이터 [1] [i]로 인해 발생할 가능성이 큽니다. 배열 인덱스가 0에서 시작하고이 코드에서 하나의 행을 가져 왔기 때문에 :

var range = sheet.getRange(row, 1, 1, column); 
    var data = range.getValues(); 

따라서 데이터 1은 정의되지 않습니다.

+0

고맙습니다. 내가하려는 일에 더 잘 부합하기 위해 코드를 조금 편집했는데 다른 문제가 발생했습니다. –

+0

내 원래 질문을 새 코드로 편집했습니다. 현재는 그 데이터를 등록하지 않습니다. [i]는 그것을 인쇄하기 위해 인쇄 했음에도 불구하고 공백입니다. [[ "", "", ""]]. 그래서 그것은 비어 있지만 그것은 그것이 비어 있음을 확인하지 못합니다. –

+0

데이터가 2D 배열이므로 위와 같이 표시됩니다. data = [[1,2], [3,4]]와 같은 2D 배열에서 data [0] = [1,2]는 다른 배열이므로! = "". –

관련 문제