iT邦幫忙

0

請益 Google Sheet 自動新增列問題

  • 分享至 

  • xImage

請益 Google Sheet 試算表功能
目前新增這段可以程式碼,可以把第一列保持空白可以讓使用者新增資料,新增的資料會依序往下新增一列排序下去,要怎麼修改才能變成第一欄保持空白新增資料用,新增的資料最新的保持在第二列,舊資料就自動往後排下去,這樣資料一多就不用拉到最下層確定有沒有輸入錯誤

function onEdit(e) {
  var sheet = e.source.getActiveSheet();
  var range = e.range;
  var columnIndex = range.getColumn();
  var rowIndex = range.getRow();
  
  if (rowIndex === 1 && range.getValue() !== "") {
    var nextRow = findNextEmptyRow(sheet, columnIndex);
    var nextCell = sheet.getRange(nextRow, columnIndex);
    nextCell.setValue(range.getValue());
    range.clearContent();
  }
}

function findNextEmptyRow(sheet, columnIndex) {
  var data = sheet.getRange(1, columnIndex, sheet.getLastRow()).getValues();
  
  for (var i = 0; i < data.length; i++) {
    if (data[i][0] === "") {
      return i + 1;
    }
  }
  
  return data.length + 1;
}

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

1
pickuse
iT邦新手 4 級 ‧ 2023-06-20 15:27:36

這應該是你想要的

function onEdit(e) {
  var sheet = e.source.getActiveSheet();
  var range = e.range;
  var columnIndex = range.getColumn();
  var rowIndex = range.getRow();
  
  if (rowIndex === 1 && range.getValue() !== "") {
    var nextRow = 2;
    var numRows = sheet.getLastRow() - 1;
    var valuesToShift = sheet.getRange(nextRow, columnIndex, numRows).getValues();
    sheet.getRange(nextRow + 1, columnIndex, numRows).setValues(valuesToShift);
    sheet.getRange(nextRow, columnIndex).setValue(range.getValue());
    range.clearContent();
  }
}

我要發表回答

立即登入回答