2017-12-23 25 views
0

は私が実行したと思った次のスクリプトを持って実行していないアプリが、私はちょうど今テストしたとき、私は、私は以下のそれを太字で表示しているエラーバックアップGoogleは、スクリプトが

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

を得ました。しかし、それはこの行です。 if(dataA[j][0] && dataA[j][1])。私は=today()をA2に入れてスクリプトがアーカイブシートに入力する日付を取得するので、セルのGoogleシートフォーマット "date"を使用しているので問題があるかどうかはわかりません。

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を交換するが、それはそのTODAYを注意することは価値があります。 getValueを使用して日付値を取得する()Dateオブジェクトでは、Google Appsスクリプトエンジンに渡され、その代わりに

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,1、data.length、rng.getWidth )+1).setValues(データ); " – Paul

関連する問題