Google script автоматическое приписание "id"

Доброе утро, Это мой код, который должен обновлять и синхронизировать данные между 3 листами Google. каким-то образом он также добавляет атрибут «ID» в столбец «B» на листах. Моя проблема в том, что я не могу найти, какой элемент это делает

const accountant = {
  'id': '1XkqS-Z1AvywD6WAws6eLNAf902Xdyts_DRWuN--3nYg',
  'sheetWork': 'Zaliczka',
  'sheetSystem': '? System'
}

function onOpenTrigger (e) { // Пример скрипта onOpen
  let ui = SpreadsheetApp.getUi()
  
  ui.createMenu('? System')
  .addItem('Sprawdzenie synhronizacji', 'updateSelectRows')
  .addToUi()
}

function onEditTrigger (e) {
  let sheet = e.source.getActiveSheet(),
      sheetName = sheet.getName(),
      range = e.range,
      row = range.getRow(),
      column = range.getColumn(),
      value = range.getValue(),
      oldValue = e.oldValue,
      ui = SpreadsheetApp.getUi()
  
  if(/Koordynator/.test(sheetName)){
    if(row > 3){
      const namesSpecialColumnsConnect = ['Stawka netto']
      const headColumnCheck = sheet.getRange(2, column).getValue()
      if(headColumnCheck === 'Connect'){
        const headColumn = sheet.getRange(3, column).getValue()
        const headRow = sheet.getRange(row, 2).getValue()
        const sheetAccountant = SpreadsheetApp.openById(accountant['id']).getSheetByName(accountant['sheetWork'])
        const dataAccountant = sheetAccountant.getRange(1, 1, sheetAccountant.getLastRow(), sheetAccountant.getLastColumn()).getValues()
        
        if(column === 3 && headRow === '' && value !== ''){
          const sheetSystem = SpreadsheetApp.openById(accountant['id']).getSheetByName(accountant['sheetSystem'])
          const headRow = sheetSystem.getRange(2, 1).getValue()
          sheetSystem.getRange(2, 1).setValue(headRow+1)
          sheet.getRange(row, 2).setValue(String(headRow))
          const length = sheetAccountant.getRange(4, 1, sheetAccountant.getLastRow()).getValues().filter(row => row[0] !== '').length
          sheetAccountant.getRange(length+4, 1, 1, 2).setValues([[String(headRow), value]])
          sheetAccountant.getRange(length+4, 5).setValue(sheetName)
          
        } else if(column === 2 && value === '' && oldValue !== undefined){
          const headOfSheetAccountant = dataAccountant[2]
          const numberRowsOfSheetAccountant = dataAccountant.map(row => String(row[0]))
          const targetRow = numberRowsOfSheetAccountant.indexOf(String(oldValue))+1
          if(targetRow > 0){
            try{sheetAccountant.deleteRow(targetRow)} catch(e) {ui.alert(e)}
          }
          sheet.deleteRow(row)
          
        } else if (column > 2 && namesSpecialColumnsConnect.indexOf(headColumn) === -1){
          const headOfSheetAccountant = dataAccountant[2]
          const targetColumn = headOfSheetAccountant.indexOf(headColumn)+1
          const numberRowsOfSheetAccountant = dataAccountant.map(row => row[0])
          const targetRow = numberRowsOfSheetAccountant.indexOf(headRow)+1
          try{sheetAccountant.getRange(targetRow, targetColumn).setValue(value)} catch(e) {ui.alert(e)}
          
        } else if (headColumn === 'Stawka netto' && value !== '') {
          const numberRowsOfSheetAccountant = dataAccountant.map(row => row[0])
          const targetRow = numberRowsOfSheetAccountant.indexOf(headRow)+1
          const headOfSheetAccountant = dataAccountant[2]
          let targetColumn = headOfSheetAccountant.indexOf(headColumn)+1 // Ищем индекс колонки ставка нетто
          try{sheetAccountant.getRange(targetRow, targetColumn).setValue(value)} catch(e) {ui.alert(e)} // вставляем значение ставки нетто
          targetColumn = headOfSheetAccountant.indexOf('Stawka brutto')+1 // Ищем индекс колонки ставка брутто
          const stavkaBrutto = sheetAccountant.getRange(targetRow, targetColumn).getValue() // берем значение ставки брутто
          targetColumn = headOfSheetAccountant.indexOf('Roznica stawek')+1 // Ищем индекс колонки розницы ставок
          const roznicaStawek = stavkaBrutto - value - 1
          try{sheetAccountant.getRange(targetRow, targetColumn).setValue(roznicaStawek < 0 ? 0 : roznicaStawek)} catch(e) {ui.alert(e)} // вставляем значение розницы ставок
          
          const headOfSheetKoordinator = sheet.getRange(3, 1, 1, sheet.getLastColumn()).getValues()[0]
          targetColumn = headOfSheetKoordinator.indexOf('Roznica stawek')+1 // Ищем индекс колонки розницы ставок
          sheet.getRange(row, targetColumn).setValue(roznicaStawek < 0 ? 0 : roznicaStawek) // вставляем значение розницы ставок
        }
      }
    }
  }
}

function updateSelectRows () {
  const spreadsheet = SpreadsheetApp.getActiveSheet()
  const sheetName = spreadsheet.getName()
  const ui = SpreadsheetApp.getUi()
  
  if (/Koordynator/.test(sheetName)) {
    const headColumns1 = spreadsheet.getRange(2, 1, 1, spreadsheet.getLastColumn()).getValues()[0]
    const headColumns2 = spreadsheet.getRange(3, 1, 1, spreadsheet.getLastColumn()).getValues()[0]
    const dataFrom = spreadsheet.getRange(4, 1, spreadsheet.getLastRow()-3, spreadsheet.getLastColumn()).getValues().filter(row => row[0] === true)
    
    if (dataFrom.length > 0) {
      const sheetAccountant = SpreadsheetApp.openById(accountant['id']).getSheetByName(accountant['sheetWork'])     
      let dataTo = sheetAccountant.getRange(1, 1, sheetAccountant.getLastRow(), sheetAccountant.getLastColumn()).getValues()
      let columnNamesTo = sheetAccountant.getRange(3, 1, 1, sheetAccountant.getLastColumn()).getValues()[0]
      let rowsNamesTo = sheetAccountant.getRange(1, 1, sheetAccountant.getLastRow()).getValues().map(row => row[0])
      
      for (let i in dataFrom) {
        let dataRow = dataFrom[i]
        
        for (let j in headColumns1) {
          if (headColumns1[j] === 'Connect') { // Нужно ли синхронизировать данную колонку
            let columnName = headColumns2[j]
            let columnIndex = columnNamesTo.indexOf(columnName)
            
            if (columnIndex !== -1) { // Есть ли такая колонка в таблице координатора
              let rowName = dataRow[1]
              let rowIndex = rowsNamesTo.indexOf(rowName)
              
              if (rowIndex !== -1) { // Есть ли такая строка в таблице координатора
                let valueFrom = dataRow[j]
                let valueTo = dataTo[rowIndex][columnIndex]
                
                if (valueFrom !== valueTo) { // Нужно ли обновлять значение
                  sheetAccountant.getRange(rowIndex+1, columnIndex+1).setValue(valueFrom)
                }
              } else {
                let lastRow = sheetAccountant.getRange(4, 1, sheetAccountant.getLastRow()-3).getValues().filter(row => row[0] !== '').length + 4
                sheetAccountant.getRange(lastRow, 1).setValue(rowName)
                dataTo = sheetAccountant.getRange(1, 1, sheetAccountant.getLastRow(), sheetAccountant.getLastColumn()).getValues()
                rowsNamesTo = sheetAccountant.getRange(1, 1, sheetAccountant.getLastRow()).getValues().map(row => row[0])
              }
            }
          }
        }
      }
      spreadsheet.getRange(4, 1, spreadsheet.getLastRow()-4).setValue(false)
    } else {
      ui.alert('You have not chosen anything!')
    }  
  }
}

лист 1

лист 2

У меня есть лист под названием, например, «лист 1» и лист «лист 2». на первом листе у меня есть столбец A, который называется ID во втором листе есть такой же столбец «ID», но в данном случае это B Часть этого кода автоматически вводит номер «ID» в указанную ячейку после заполнения ячейки столбца B на листе 1 или столбца C на листе 2.


Ответы (0 шт):