2017-08-31 3 views
2

Dies ist das erste Mal, dass ich mit Google Script programmieren und ich kann nicht herausfinden, wie Sie eine Funktion hinzufügen, um Googles Fehlermeldung der Überschreitung der Bearbeitungszeit zu umgehen. Kannst du bitte helfen?Script-Zeit überschritten in Google App-Skript

Das Programm erhält die Anzahl der bestellten Bars und Pints ​​und referenziert sie in ein anderes Blatt, das einen Taschenrechner hat, um die Kosten zu berechnen und den Wert auszugeben. Wäre wirklich die Hilfe

/** 
* 
* 
*/ 

function STBIBOL() 
{ 

    var r = 6 
    var destclm = 11 
    var pintsclm = 105 
    var barsclm = 101 

    var spreadsheet_url = 'https://docs.google.com/spreadsheets/d/1cqgdo_pgJ4n0xhXqMah24g6jjv7sfl2o92k1pwXNUuo/edit#gid=532254312'; 
    var sheet_name = 'BOLs Entered for Fulfillment'; 
    var sheet_name1 = 'STBI Calculator'; 

    var ss = SpreadsheetApp.openByUrl(spreadsheet_url); 
    var sheet = ss.getSheetByName(sheet_name); 
    var sheet1 = ss.getSheetByName(sheet_name1); 
    var lastRow = sheet.getLastRow(); 

    for(i =1; i< 20; i++) 
    { 
    var rangeD = sheet.getRange(r,destclm) 
    var dest = rangeD.getValue() 
    var rangeS = sheet.getRange(r,pintsclm) 
    var pints = rangeS.getValue() 
    var rangeB = sheet.getRange(r, barsclm) 
    var bars = rangeB.getValue() 
    var range = sheet1.getRange(14,3) 
    range.setValue(dest) 
    var range2 = sheet1.getRange(11, 3) 
    range2.setValue(pints) 
    var range3 = sheet1.getRange(12, 3) 
    range3.setValue(bars) 
    var rangev = sheet1.getRange(8,3) 
    var value = rangev.getValue() 
    var range4 = sheet.getRange(r,110) 
    range4.setValue(value)  
    r = r + 1 
    } 


} 
+0

EDIT: Die For-Schleife sollte schließlich für (i = 1; ich

+0

Willkommen bei Stack Overflow, @Jeet Ghosh. Wäre es einfacher (und schnellere Ausführung), die Logik in Ihrem Skript einfach zu codieren, anstatt auf eine Tabelle zuzugreifen? Haben Sie das mit einer vereinfachten Version Ihres Skripts getestet? – Degan

+0

Nein, habe ich nicht. Ich bin nicht am flüssigsten in Javascript und leider muss etwas bei der Arbeit gelöst werden, und während ich vorhabe, Unterricht zu nehmen, habe ich versucht, eine effektive Lösung zu finden. Ziemlich sicher, dass ich einen getroffen habe. Ich kann den aktualisierten Code posten, wenn ich fertig bin –

Antwort

2

schätzen Statt mehrere Anrufe auf GAS-Dienste auf jedem Durchlauf der Schleife zu machen, die die Ausführung fehlschlägt, können Sie einfach das gesamte Spektrum in einem Aufruf wie folgt erhalten:

var range1 = sheet1.getRange(startRow, startColumn, numberOfRows, numberOfColumns); 

Wenn der Bereich in dem zweiten Blatt die gleichen Abmessungen (gleiche Anzahl von Zeilen und Spalten) als erstes Blatt hat, könnte man einfach 1) erhält die Werte aus dem Originalblatt als 2D-Array

var values1 = range.getValues(); 

2) Werte auf das 2. Blatt schreiben

var range2 = sheet2.getRange(startRow, startColumn, numberOfRows, numberOfColumns); 
range2.setValues(values1); 
+0

Wie würde ich dann die einzelnen Werte aus dem gesamten Bereich bekommen? –

+0

Sie durchlaufen das Array unter Verwendung der grundlegenden 'for'-Schleife. Ich schlage vor, dass Sie einen JavaScript-Anfängerkurs finden, bevor Sie mit Google Apps Script fortfahren –

Verwandte Themen