2016-08-04 7 views
0

Diese Funktion/Auslöser-Kombination soll täglich ein Protokoll der Live-Daten führen. Die Absicht ist, dass N2: P2 als Werte am Ende der Spalten C: E eingefügt wird.Google Scripts - Funktion Fehler mit Zeitauslöser

  1. pullvalue() funktioniert gut, wenn ich es manuell ausführen.
  2. HIER IST DAS PROBLEM: Das Einrichten eines zeitgesteuerten Triggers bewirkt, dass die Werte bei C1: E1 eingefügt werden und nicht am unteren Rand der Spalten.
  3. Mein Verdacht ist, dass target_range bricht zusammen, wenn Clast gibt einen Wert von Null zurück, aber ich kann nicht herausfinden, warum.

Was fehlt mir? Danke für deine Hilfe/Feedback!

function pullvalue() { 
 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
 
    var target = SpreadsheetApp.getActiveSpreadsheet(); 
 
    var source_sheet = ss.getSheetByName("Production"); 
 
    var target_sheet = target.getSheetByName("Production"); 
 
    var source_range = source_sheet.getRange("N2:P2"); 
 
    var Cvals = ss.getRange("C1:C").getValues(); 
 
    var Clast = Cvals.filter(String).length; 
 
    var target_range = target_sheet.getRange("C"+(Clast+1)+":E"+(Clast+1)) 
 
    source_range.copyTo(target_range, {contentsOnly:true});}

Antwort

0

Bitte überprüfen Sie diese Zeile:

var Cvals = ss.getRange("C1:C").getValues(); 

Variable ss Rückkehr activespreadsheet derzeit nur, aber wenn es von einem zeitgesteuerten Auslöser läuft, ist es kein aktives Blatt, so dass Sie müssen Sie das Blatt angeben, können Sie getSheetByName() oder getSheets() verwenden, sollte die Zeile wie folgt aussehen:

var sheet = ss.getSheetByName("Sheet1"); 
var Cvals = sheet.getRange("C1:C").getValues(); 

Hoffe das wird dir helfen.

Danke.

+0

Das funktioniert perfekt! Vielen Dank! – xphrellis