Google 脚本/js 脚本未更新当前值

Google Script / js script not updating current value

这是当前代码: 最后一个问题 --> 我如何将每一个结果都放在一个字符串中。 (访问登录截图)

var 结果应该是这样的:

尼克 | HUR-L2 |拉兰石 | 4564 + "\n" + 托比 | CRU-L1 |量体| 513 + "\n"

function Test() {
  var sSheet = SpreadsheetApp.getActiveSpreadsheet();
  var srcSheet = sSheet.getSheetByName("Sheet1");
  var lastRow = srcSheet.getLastRow();
  for (var i = 2; i <= lastRow; i++) {
    var val = srcSheet.getRange(i,13).getValue();
    if (val == 1) {
      var speech = srcSheet.getRange(i,4).getValue();
      Logger.log(speech)
    }
  }
}
D M
5 1
10 0
15 1
20 1
Execution log
5:47:46 PM  Notice  Execution started
5:47:46 PM  Info    5.0
5:47:46 PM  Info    15.0
5:47:46 PM  Info    20.0
5:47:47 PM  Notice  Execution completed

您可以通过 getRange('your range').getValues() 一次获取所有 table 日期,然后以这种方式过滤:

const table = [  // just as an example
    [1235, 1],
    [4564, 0],
    [452, 1],
    [513, 1]
]

const values = table.filter(t => t[1] == 1).map(t => t[0])

console.log(values); // [ 1235, 452, 513 ]

对于您的情况,代码可以归结为:

function test() {
  const sSheet   = SpreadsheetApp.getActiveSpreadsheet();
  const srcSheet = sSheet.getSheetByName("Refinery");
  const table    = srcSheet.getRange("D:M").getValues(); // use "D2:M" if you have a header
  const values   = table.filter(t => t[9] == 1).map(t => t[0]);

  Logger.log(values); // [1235.0, 452.0, 513.0]
}

更新

如果您想要来自 C、D、E 的数据,您可以这样做:

const table    = srcSheet.getRange("C:M").getValues(); // get a wider range

const values_C = table.filter(t => t[10] == 1).map(t => t[0]);
const values_D = table.filter(t => t[10] == 1).map(t => t[1]);
const values_E = table.filter(t => t[10] == 1).map(t => t[2]);

table 是来自给定范围 ("C:M") 的 table,其中 table[0][0]Ctable[0][1]D,等等

filter() 部分从第 10 列中没有“1”的 table 行中删除(table[0][10]M)。

map() 部分从每一行中删除除一个单元格之外的所有单元格。

或(更高效但可读性较差的变体):

const [values_C, values_D, values_E] = 
      table.filter(t => t[9] == 1).map(t => [t[0], t[1], t[2]]);

这样你会得到一个array。要获得 string,您还需要一个步骤:

const values_C_string = value_C.join(", ") // [a,b,c] --> "a, b, c"

您可以这样链接这一步:

const values_C = table.filter(t => t[10] == 1).map(t => t[0]).join(", ");