从 google sheet 中的范围逐步生成 high/low 值

Make the high/low values in step wise from a range in google sheet

需要 google 应用脚本来逐步生成从范围单元格值中获取的数字数组。示例假设从 A 列中获取的单元格值如下: A1 1 A2 4 A3 2 A4 1 A5 4 B 列中的结果单元格值应如下所示: B1 1 B2 1 B3 2 B4 2 B5 3 B6 3 (B7 4) (B8 4) B9 3 B10 3 (B11 2) (B12 2) (B13 1) (B14 1) B15 2 B16 2 B17 3 B18 3 (B19 4) (B20 4) 逻辑是使每个最近的 high/low 个数字从以前的数字 adding/subtracting 乘以 1 直到通过相同的两次输入达到最近的数字以逐步进行。在结果 B 列中,括号中的数字是 A 列的单元格值,而不是括号中的数字是按逻辑添加的新数字。

描述

我相信你想要的是在 2 个值之间,根据 2 个值之间的差异在它们之间递增 +1 或 -1。

脚本

function test() {
  try {
    let sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Test");
    let values = sheet.getDataRange().getValues();
    let result = [values[0][0],values[0][0]];
    for( let i=0; i<values.length-1; i++ ) {
      let diff = values[i+1][0]-values[i][0];
      let inc = diff < 0 ? -1 : 1;
      diff = Math.abs(diff);
      let current = values[i][0];
      for( let j=0; j<diff; j++ ) {
        current = current+inc;
        result.push(current,current);
      }
    }
    result = result.map( item => [item] );  // turn result into 2D array
    sheet.getRange(1,2,result.length,1).setValues(result);
  }
  catch(err) {
    console.log(err);
  }
}

屏幕截图