2017-12-23 1 views
0

나는 내가 실행 한 생각 아래 스크립트가 실행되지 않는 애플 리케이션을하지만 난 지금 시험했을 때 나는 아래를 굵은 한 오류백업 구글은 스크립트가

TypeError: Cannot read property "0" from undefined line 31.

을 얻었다. 그러나 그것은이 선입니다. if(dataA[j][0] && dataA[j][1]). A2에서 =today()을 사용하여 스크립트가 보관 시트에 입력하는 데 필요한 날짜를 얻으므로 셀의 Google 시트 형식 "날짜"를 사용하고 있기 때문에 이것이 문제가되는지 확실하지 않습니다.

function dataBackup() 
{ 
var inputSS = SpreadsheetApp.getActiveSpreadsheet(); 
var archiveSS = SpreadsheetApp.openById('1uPA_4CRmv2wkqe1uljViJ- 
1z1NTNDmwS3aE6TDowe88'); 
var sheetNames = ['AM trip', 'PM trip', 'Pool/Beach', 'Night Dive']; 
for (var i=0; i<sheetNames.length; i++) 
{ 
    var inputSheet = inputSS.getSheetByName(sheetNames[i]); 
var archiveSheet = archiveSS.getSheetByName(sheetNames[i]); 
var date=new Date(inputSheet.getRange('A2').getValue());  
var rng=inputSheet.getRange('E7:U37'); 
var dataA=rng.getValues(); 
var data=[]; 
for(var j=0;i<dataA.length;j++) 
{ 
    **if(dataA[j][0] && dataA[j][1])** 
    { 
    data.push([dataA[j].splice(0,0,date)]); 
    } 
} 
var dv=archiveSheet.getRange(archiveSheet.getLastRow(), 1).getValue(); 
date=(typeof(dv)!='undefined')?dv:'No Date Found'; 
if (data.length>0) 
{ 
    archiveSheet.insertRowsAfter(archiveSheet.getLastRow(), data.length); 
    archiveSheet.getRange(archiveSheet.getLastRow() + 1, 1, data.length, rng.getWidth()+1).setValues(data); 
} 
else 
{ 
    archiveSheet.insertRowsAfter(archiveSheet.getLastRow(), 1); 
    archiveSheet.getRange(archiveSheet.getLastRow() + 1, 1, 1, 2).setValues([[date, 'No Data']]); 
} 
} 
} 

답변

0

짧은 대답

는 루프 관련에 오타가 있습니다.

for(var j=0;i<dataA.length;j++) 

에 오늘 날짜를 반환) (= TODAY()가 오류를 일으키는 지, 그렇지 않은 관련하여

대답 j

Extendet에 ​​의해 i을 대체하지만, 그 오늘을주의하는 가치 . getValue를 사용하여 날짜 값을 얻기() 날짜 객체는 Google 애플리케이션 스크립트 엔진으로 전달되기 때문에 대신

var date=new Date(inputSheet.getRange('A2').getValue()); 

는 작동하지만 지금은이 오류를 던지고있다

var date=inputSheet.getRange('A2').getValue(); 

+0

을 시도합니다. "잘못된 범위 너비는 1이지만 18이어야합니다 (41 행,"백업 데이터 업데이트 "파일)" – Paul

+0

@Paul 41 번 줄은 무엇입니까? –

+0

작동하지만 이제는이 오류가 발생합니다. "올바르지 않은 범위 너비는 1이지만 18이어야합니다 (41 행,"백업 데이터 업데이트 "파일)."이것은 라인입니다. "archiveSheet.getRange (archiveSheet.getLastRow() + 1, data.length, rng.getWidth()) +1) .setValues ​​(데이터); " – Paul