Google Spreadsheet Scripts, die in mehreren Arbeitsblättern (nicht in Bibliotheken) verwendet werden

Ich habe eine Menge nach diesem Problem gesucht und ich denke, dass das Problem darin besteht, dass alle Antworten zu einer Lösung führen, bei der Sie eine Bibliothek erstellen müssen. Die einzige Möglichkeit, diese Bibliothek zu einer Tabelle hinzuzufügen, besteht darin, ein neues Skript für diese Tabelle zu erstellen und einzuschließen.

Was ich möchte: Eine Reihe von Tabellenkalkulationen, die alle ein Masterskript enthalten. Jedes Mal, wenn das Skript aktualisiert wird, werden alle aktualisiert, um das neueste Skript zu verwenden.

Was ich habe: 15 Tabellenkalkulationen, die alle Kopien des Originalskripts enthalten. Das ursprüngliche Skript hat sich geändert und jetzt scheint es, dass ich jedes aufgerufene Skript bearbeiten mussCopy of myScriptName das ist in jeder kopierten Tabelle vorhanden.

Was ich getan habe: Ich habe die erste Tabelle erstellt und das Skript aus einem Projekt heraus geschrieben, das ich in seinem Skript-Editor erstellt habe. Hat perfekt funktioniert. Ich habe dann 14 Kopien dieser Tabelle für jeden Unternehmensbereich angefertigt, um sie zu verwenden.

Wie kann ich das Skript einfach freigeben und außerhalb der einzelnen Tabellen selbst verwalten? Ich muss hier etwas vermissen, wenn man bedenkt, dass alle Leute nach der gleichen Antwort suchen. Ich verstehe nur nicht, wie ich meinen Anwendungsfall lösen kann, wenn ich daraus eine Bibliothek mache.

Vielen Dank!

Ich verstehe nicht, was dies helfen wird, aber gemäß der Anfrage des Kommentars hier ist das Skript:

function createRollupTable() {

  //Return if:
  //   There is only the account code parameters passed in with no quarterly info
  //   If the length of the account code parameters passed is empty
  if(arguments.length <= 1 || !arguments[0] || arguments[0].length <= 0) {
    return "";
  }

  var rollupTable = new Array();
  var fullListAccountCodes = arguments[0];

  //The first column of output is the full list of account codes for all the quarters
  rollupTable[0] = fullListAccountCodes;

  //Array to keep the YTD total for each account code
  var yearlyAccountCostOutput = new Array(fullListAccountCodes.length);

  //Iterate over all the quarters that were passed in
  for(var i=1;i<arguments.length;i++) {

    //This array should be set to the total length of the available account codes
    var quarterlyRollupCostOutput = new Array(fullListAccountCodes.length);
    var quarterlyBreakdown = arguments[i];
    var quarterIndexCounter = 0;
    var quarterTotalCost = 0;

    //Iterate over all the account codes
    for(var j=0;j<fullListAccountCodes.length && quarterIndexCounter<quarterlyBreakdown.length;j++) {

      //Find the one that matches the current account code for this quarter
      if(fullListAccountCodes[j] == quarterlyBreakdown[quarterIndexCounter][0]) {

        //Set the index of the output based on the full list so they align
        quarterlyRollupCostOutput[j] = quarterlyBreakdown[quarterIndexCounter][1];

        //Add this cost to the running total for the quarter
        quarterTotalCost += quarterlyBreakdown[quarterIndexCounter][1];

        //Add the total amount for the yearly rollup for that account code
        if(yearlyAccountCostOutput[j]) {
          yearlyAccountCostOutput[j] += quarterlyBreakdown[quarterIndexCounter][1];
        } else {
          yearlyAccountCostOutput[j] = quarterlyBreakdown[quarterIndexCounter][1];
        }

        //Increment the counter so we search for the next account code in the quarter
        quarterIndexCounter++;

      }
    }

    rollupTable[i] = quarterlyRollupCostOutput;

    //Add a blank row in the results for spacing
    rollupTable[i].push("");

    //Add the quarterly total cost
    rollupTable[i].push(quarterTotalCost);

  }

  //Add a blank row for spacing
  rollupTable[0].push("");

  //Google spreadsheet forces you to pad with non breaking spaces, no right align option available
  var spaces = "";
  var numSpaces = 66;
  for(var i=0;i<numSpaces;i++){spaces+=String.fromCharCode(160);};

  //Add a row for the Totals
  rollupTable[0].push(spaces + "Totals:");

  //Add the YTD column
  rollupTable.push(yearlyAccountCostOutput);

  return rollupTable;
}

Antworten auf die Frage(1)

Ihre Antwort auf die Frage