Google 表格在映射数组中插入一行

Google sheets insert a row into a mapped array

提问人:FeDude 提问时间:10/27/2023 更新时间:10/27/2023 访问量:19

问:

我有一个谷歌表格,其中包含一个例程,可以使用另一个工作表中的数据更新主表。主工作表的名称在第 1 列中,数据在相邻的 18 列中。主工作表按名称排序。

使用谷歌脚本,我将主数据映射到一个数组中,然后逐行读取每周工作表并更新主数据(如有必要)。完成后,应该更新主表,因为它已映射到已更新的数组。

每周,我想用每周结果更新主表。

这是我的问题:我可能会在周表中遇到另一个在母版中找不到的名字。在这种情况下,我需要在主数组中创建一个新行(保持字母顺序)

我已经研究过推送,但我不知道如何按字母顺序排列。或者,我可以将其添加到末尾,然后对数组进行排序,但我不确定映射将如何工作。

如果能提供一些指导,将不胜感激。

function updateRinger() {
  var WEEKLYPOINTER = 1;
  var app = SpreadsheetApp;
  var ss = app.getActiveSpreadsheet();
  var best = ss.getSheetByName("Ringer");
  var name = ss.getSheetByName("Info");
  var sheetNameFromUser = name.getRange("A1").getValue();
  var latest = ss.getSheetByName(sheetNameFromUser);
  var ringer = best.getRange(2,1,best.getLastRow(),best.getLastColumn()-1).getValues();
  var weekly = latest.getRange(1,1,latest.getLastRow(),latest.getLastColumn()).getValues();

  //Load the best ringer scores into an array and update them if necessary
  var updates = ringer.map(updateScores);

    //Replace the best scores spreadsheet from the array
  ringer = best.getRange(2,1,best.getLastRow(),best.getLastColumn()-1).setValues(updates);

  function updateScores(player){
  //
  //Compare the weekly extract against the best scores for every member and every hole
  //
    //First - Loop through the weekly extract and compare names against the "best scores"
    for (i=WEEKLYPOINTER; i<weekly.length; i++){
      if (weekly[i][0] == player[0] ){  //Found a name match
        //Now compare all 18 holes for a new lower score
        for (j=1; j<19; j++){
          if((player[j] > weekly[i][j]) || (player[j] === "")){  // Found a new "lowest score"
            //Update the best score for that player
            Logger.log("Update Needed: " + player[0] + " Hole: "+ j + " Old Score: "+player[j] + " New Score: " + weekly[i][j]);
            player[j] = weekly[i][j];
          }
        }
        return player;  //Players stats were updated
      } 
    }
    return player;  //No Update this week
  }
数组 字典 google-sheets 插入

评论

0赞 pgSystemTester 10/27/2023
为什么不让你的主列表一个公式,获取所有唯一名称,然后按字母顺序排序呢?像...=Sort(Unique(filter(A:A,A:A<>"")))
0赞 Tanaike 10/27/2023
我必须为我糟糕的英语水平道歉。不幸的是,我无法理解你的问题。为了正确理解您的问题,您能否提供您期望的示例输入和输出情况?首先,我想正确理解你的问题。

答: 暂无答案