Google 张。将随机值从一个列移动到另一个列的自定义脚本

Google sheets. Custom script to move random value from on column to another

我想要一个可以将随机值从一列移动到另一列的自定义脚本

示例:

之前

之后

这能以某种方式实现吗?

尝试

function myFunction() {

  const sheet = SpreadsheetApp.getActiveSpreadsheet()
                              .getSheetByName(`MY_SHEET_NAME`)

  const colAValues = sheet.getRange(`A2:A`)
                          .getDisplayValues()
                          .filter(String)

  const colBValues = sheet.getRange(`B2:B`)
                          .getDisplayValues()
                          .filter(String)
  
  const randomIndex = Math.floor(Math.random() * colAValues.length)
  const randomValue = colAValues.splice(colAValues.indexOf(randomIndex), 1)
  colBValues.push(randomValue)

  sheet.getRange(`A:B`).clearContent()
  sheet.getRange(2, 1, colAValues.length, 1).setValues(colAValues)
  sheet.getRange(2, 2, colBValues.length, 1).setValues(colBValues)

}

随机移动

function randomMove() {
  const ss = SpreadsheetApp.getActive();
  const sh = ss.getSheetByName("Sheet0");
  let col1 = sh.getRange(2, 1, sh.getLastRow() - 1).getValues().flat().filter(e => e);
  let col2 = sh.getRange(2, 2, sh.getLastRow() - 1).getValues().flat().filter(e => e);
  let idx = Math.floor(Math.random() * col1.length);
  let v = col1[idx];
  if (col1[idx]) {
    col2.push(col1[idx]);
    col1.splice(idx, 1);
  }
  if (col1.length || col2.length) {
    sh.getRange(2, 1, sh.getLastRow() - 1, 2).clearContent();
  }
  if (col1.length) {
    sh.getRange(2, 1, col1.length, 1).setValues(col1.sort((a, b) => a - b).map(e => [e]));
  }
  if (col2.length) {
    sh.getRange(2, 2, col2.length, 1).setValues(col2.sort((a, b) => a - b).map(e => [e]));
  }
}

演示: