2017-06-24 5 views
0

Ich schreibe ein Google-Skript auf einer Tabelle auf der Grundlage eines Google-Formulars über die Versteigerung von Gebrauchtwagen. Mein Lehrer gab mir diese Anweisungen:Hinzufügen zur Tabelle mit Google Script Editor

Fügen Sie in der Tabelle ein Google-Skript mit einer Funktion, die für das höchste Gebot suchen und das Google-Formularfeld aktualisieren Funktion 1: Alle Werte in der Spalte Gebot abrufen und den höchsten Wert mit finden eine Schleife. Funktion 2: Öffnen Sie das Google-Formular und aktualisieren Sie das Formularfelderfeld (z. B. das aktuelle Höchstgebot ist $ xxxx, geben Sie bitte Ihr Gebot ein). Wobei xxxx das höchste Gebot ist. (Referenz: https://developers.google.com/apps-script/reference/forms/) Erstellen Sie im Skript einen Trigger, der die oben genannten Funktionen auslöst und das Google-Formular aktualisiert.

Und hier ist mein Code:

function myFunction(e) { 
    var ss = SpreadsheetApp.getActive().getSheetByName('Used Car Auction') 
    var form = FormApp.openById('1D0XE9womWv2T_rFYTtc9enQgIhCkxaK8SErxNkTh7NE') 
    ScriptApp.newTrigger('onFormSubmit') 
    .forForm(form) 
    .onFormSubmit() 
    .create(); 
    var values = SpreadsheetApp.getActiveSheet().getDataRange().getValues() 
    var bid = values [88000] 
    var highest = Math.max(bid).toString(); 
    formsetTitle('Used car auction:' + 'The highest bid is:' + highest) 
    .setDescription ('Description of Form') 
    .setConfirmationMessage('Thanks for bidding!') 
    .setAllowResponseEdits(false) 
    .setAcceptingResponses(true); 
    } 

Google sagt: Typeerror: Die Methode kann nicht "getSheetByName" von null nennen.

Was mache ich falsch? Ich habe gerade fünf Tage lang codiert, und das verwirrt mich.

Abgesehen davon bin ich auf dem richtigen Weg, wie in den obigen Anweisungen?

+1

Es ausgelöst wird, wenn ein Formular abschickt, aber an diesem Punkt gibt es keine Tabelle offen/aktiv. Sie sollten also die ID der Tabelle angeben und sie über 'openById (id)' öffnen – Casper

Antwort

1

Es gibt einige grundlegende Fehler in Ihrem Code. Um Werte in ein Arbeitsblatt in Google Spreadsheet zu schreiben, müssen Sie bestimmte Schritte ausführen.

Schritt-1: Get Spreadsheet-Objekt.

e.g. var spreadsheetObject = SpreadsheetApp.getActiveSpreadsheet(); -> If you are using bounded script.

ODER e.g. var spreadsheetObject = SpreadsheetApp.openById(<SPREADSHEET_ID>); -> If you are using standalone script.

Schritt-2: Get Object Arbeitsblatt.

e.g. var worksheetObject = spreadsheetObject.getSheetByName(<NAME_OF_WORKSHEET>);

Sie erhalten diese TypeError: Cannot call method "getSheetByName" of null Fehler, weil Sie, ohne sich dessen Tabellenobjekt ein Arbeitsblatt zu öffnen versuchen.

this helps :)

Verwandte Themen