将数组的单个元素写入另一个 sheet

Writing a single element of an array to another sheet

我正在尝试从一个范围内的所有数据中提取sheet 并根据项目[27] 和项目[29] 等于“CO”的特定条件对其进行过滤。它工作正常并正确过滤范围但是我试图只输出数组中的一项,即 item[3] 但它没有这样做。它为我提供了整个范围的过滤版本,这很好,但我不想要那个。

这基本上是一个传播sheet,其中包含学生和有关他们已完成的工作模块的信息。我只想过滤学生的姓名,即项目 [3],他们在某个工作模块中标记为“CO”或“完成”到另一个 sheet。我尝试使用 data.map 将过滤后的数据映射到另一个数组中,然后尝试仅输出数组的一个元素,但效果不佳。

顺便说一句,这是我第一次编写任何代码并使用 Google Apps 脚本。我真的对这些东西很感兴趣,希望有一天能和这里的任何人一样好。任何帮助我将不胜感激。

function ReviewReport() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var mastersheet = ss.getSheetByName("Master Sheet 18-19-20");
  var newtab = ss.getSheetByName("ReviewReportTest(Amith)");

  var totalcolumns = mastersheet.getLastColumn();
  var totalrows = mastersheet.getLastRow();

  var masterdata = mastersheet
    .getRange(4, 1, totalrows - 3, totalcolumns)
    .getDisplayValues();

  var data = masterdata.filter(function (item) {
    //  return item[27] === "CO" && item [29] === "CO";

    if (item[27] === "CO" && item[29] === "CO") {
      return item[3];
    }
  });

  //tried to map the filtered data into another array below but this is not working as well.
  var bsb = data.map(row);
  function row(item) {
    return item[3];
  }

  newtab.clearContents();
  newtab.getRange(1, 1, data.length, data[0].length).setValues(data);
}

要从 Array 对象写入单个值,请使用 Class 范围 setValue(value),其中值可以是 data[rowIndex][columnIdx].


  1. bsb 已声明但后来未使用。
  2. 代码正在将整个过滤后的数据添加到电子表格
  3. Array.prototype.map 和它的回调在同一范围内声明,但在回调声明之前使用 map。我认为最好在调用之前声明它,或者声明回调全局范围,但这完全取决于你。考虑风格、可读性和可维护性。

资源

相关

  • Declaring variables and functions, in what order?
  • Create a custom callback in JavaScript