Skrypty Arkusz kalkulacyjny Google współużytkowane przez arkusze kalkulacyjne (nie biblioteki)

Zrobiłem mnóstwo poszukiwań tego problemu i myślę, że problem polega na tym, że wszystkie odpowiedzi prowadzą do rozwiązania, które wymaga utworzenia biblioteki. Jedynym sposobem, aby dodać tę bibliotekę do arkusza kalkulacyjnego, jest utworzenie nowego skryptu dla tego arkusza kalkulacyjnego i dołączenie go.

Czego chcę: zestaw arkuszy kalkulacyjnych, z których wszystkie zawierają jeden skrypt główny. Za każdym razem, gdy skrypt jest aktualizowany, wszyscy aktualizują się, aby korzystać z najnowszego skryptu.

Co mam: 15 arkuszy kalkulacyjnych, z których wszystkie mają kopie oryginalnego skryptu. Oryginalny skrypt się zmienił i teraz się pojawi, muszę przejść do edycji każdego skryptu o nazwieCopy of myScriptName który istnieje w każdym skopiowanym arkuszu kalkulacyjnym.

Co zrobiłem: stworzyłem pierwszy arkusz kalkulacyjny i napisałem skrypt z projektu, który stworzyłem w edytorze skryptów. Pracował idealnie. Następnie wykonałem 14 kopii tego arkusza kalkulacyjnego dla każdego działu firmy, z którego będę korzystać.

W jaki sposób mogę po prostu udostępnić skrypt i zarządzać nim poza jakimikolwiek pojedynczymi arkuszami kalkulacyjnymi? Muszę tu coś przegapić, biorąc pod uwagę wszystkich ludzi szukających tej samej odpowiedzi. Po prostu nie widzę, jak uczynienie z niej biblioteki rozwiązuje mój przypadek użycia.

Dzięki!

Nie wiem, co to pomoże, ale na prośbę komentarza znajduje się skrypt:

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

questionAnswers(1)

yourAnswerToTheQuestion