2016-09-29 11 views
0

私はgoogleシート用のGoogleアプリケーションを使用して小さなデータスクレイピングスクリプトを作成しようとしています。私はまだJavaScriptを学んでいるし、私はまったく新しいGoogleスクリプトです。データスクラップスクリプトで「値なしの属性」エラーが発生しました

私は以下のコードを書いています(いくつかの助けを借りて、ここに以前の質問からの回答があります)が、今私は次のエラーがあります:"Attribute provided with no value"。私がurls.lengthをどんな値で置き換えようとしていると、何が起こるのでしょうか。だから、私は自分の問題を理解しているとは思っていますが、解決方法はわかりません。私はここで

は私のコードです... var urlsが適切な配列でないことを推測:

function getArray() { 
    var newData = new Array(); 
    var sheet = SpreadsheetApp.openById('my_id').getSheetByName('Sheet2'); 
    var urls = sheet.getRange("A1:A").getValues(); 
    var fromText = '<span class="nb-shares">'; 
    var toText = '</span>'; 

    for(var i = 0; i < urls.length; i++){ 
    var url = urls[i]; 
    var content = UrlFetchApp.fetch(url).getContentText(); 
    var scraped = Parser 
        .data(content) 
        .from(fromText) 
        .to(toText) 
        .build(); 

    newData.push([scraped]); 
    } 

    var sheet2 = SpreadsheetApp.openById('my_id').getSheetByName('Sheet5'); 
    sheet2.getRange(1, 1, newData.length, newData[1].length).setValues(newData); 
} 

は言及を忘れ:私はParser library

+1

エラーはどの回線から発生していますか?表示メニューの実行記録を見てください。 '' scraped''行の直後に 'Logger.log(' scraped: '+ scraped) 'ステートメントを置き、コードを実行してログを表示してください。 Apps Scriptには 'Parser'クラスはありません。それは何ですか? –

+0

'値が与えられていない属性:url(10行目、" code ")'。 'var content = UrlFetchApp.fetch(url).getContentText();'私は私のurls.lengthとは関係がないと思います... –

+2

'Logger.log(url)'を実行して、有効なURLを取得している場合 –

答えて

1

getValues()方法は、2次元の配列を返します。内部配列から値を取得していません。

現在:

var url = urls[i]; 

は次のようになります。

var url = urls[i][0]; 

あなたは、内側アレイの[0]インデックスを追加する必要があります。

0

を使用していますあなたの疑いでURLがないということであるならばあなたが定義した後にconsole.log(urls)だけで、それが配列か何か他のものかどうかを確認するよりも、適切な配列を見つけることができます。

またはこれにconsole.log(Array.isArray(のURL))のような試験

+0

GoogleのバージョンはLogger.log()です。 –

関連する問題