2016-09-29 3 views
0

Ich versuche, ein kleines Daten Scraping-Skript mit Google Apps für Google-Blatt zu erstellen. Ich lerne immer noch Javascript und ich bin völlig neu Google Script.Fehler "Attribut mit keinem Wert geliefert" auf Scraping-Skript

Ich habe den Code unten geschrieben (mit ein wenig Hilfe, bereits eine Antwort von einer vorherigen Frage hier), aber jetzt habe ich den folgenden Fehler: "Attribute provided with no value". Was passiert ist, dass, wenn ich urls.length mit was auch immer Wert es funktioniert ersetzt wird. Also verstehe ich mein Problem, aber ich weiß nicht, wie ich es lösen soll. Ich denke, dass var urls keine richtige Array ist ...

Hier ist mein Code:

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); 
} 

vergessen zu erwähnen: Ich bin mit Parser library

+1

Aus welcher Zeile kommt der Fehler? Suchen Sie im Ausführungstranskript im Menü Ansicht nach. Setzen Sie eine 'Logger.log (' scrapped: '+ scrapped) Anweisung direkt nach der 'scraped' Zeile, dann führen Sie den Code aus und zeigen Sie die LOGS an. Es gibt keine "Parser" -Klasse in Apps Script. Was ist das? –

+0

'Attribut ohne Wert: URL (Zeile 10, Datei" Code ")'. Hier ist die Zeile10: 'var content = UrlFetchApp.fetch (url) .getContentText();' Ich denke, ich habe nichts mit meinen URLs zu tun. Length ... –

+2

Sie könnten 'Logger.log (url)' laufen lassen und sehen wenn Sie gültige URLs erhalten. –

Antwort

1

getValues() Die Methode gibt einen 2-dimensionalen Array. Sie erhalten den Wert nicht aus dem inneren Array.

Derzeit:

var url = urls[i]; 

Sollte sein:

var url = urls[i][0]; 

Sie müssen den [0] Index für die innere Array hinzuzufügen.

0

Wenn Ihr Verdacht ist, dass Urls nicht ein richtiges Array als Sie können nur console.log (URLs), nachdem Sie es definieren und sehen, ob es ein Array oder etwas anderes ist.

Oder-Test wie dieser console.log (Array.isArray (URLs))

+0

Googles Version ist Logger.log() –

Verwandte Themen