NodeJS node js bot

Статус
В этой теме нельзя размещать новые ответы.

Kecer

Участник
Автор темы
241
11
Пользуюсь библиотекой "GoogleSpreadsheet"

JavaScript:
const { GoogleSpreadsheet } = require('google-spreadsheet');

У меня в таблице есть
1654198363976.png

И мне надо найти name допустим Brent и изменить его rank допустим на Developer, но как это сделать я не знаю. Надеюсь на вашу помощь

Вот код:
Но этот скрипт работает не много по другому, условно говоря он ищет name Brent и заменяет его на William, а мне надо что бы оно искало name Brent и заменяло rank на Developer, не могу догнать как помогите пожалуйста

JavaScript:
const updateRow = async (keyValue, oldValue, newValue) => {

  const doc = new GoogleSpreadsheet('СКРЫЛ');
    
  await doc.useServiceAccountAuth({
    client_email: creds.client_email,
    private_key: creds.private_key,
  });

  await doc.loadInfo();

  // Index of the sheet
  let sheet = doc.sheetsByIndex[0];

  let rows = await sheet.getRows();

  for (let index = 0; index < rows.length; index++) {
      const row = rows[index];
      if (row[keyValue] === oldValue) {
        rows[index][keyValue] = newValue;
        await rows[index].save();
        break;
      }
  };
};

updateRow('name', 'Brent', 'William')
 
Последнее редактирование:
  • Вау
Реакции: Raznosi
Решение
ну типа
JavaScript:
const update = async (keyValue, oldValue, newValue) => {
    await doc.useServiceAccountAuth(creds, "google-spreadsheet@apt-task-352313.iam.gserviceaccount.com");
    await doc.loadInfo();
    const sheet = doc.sheetsByIndex[0];
    const rows = await sheet.getRows(); // preload
    await sheet.loadCells('A1:'+String.fromCharCode(65+sheet.columnCount-1)+rows.length+1); // подгружаем все нужные ячейки( ascii - код буквы "А" + количество столбцов - подгружаем к примеру от A1 до C8)
    for(let i=0; i < sheet.columnCount; i++) // идём по первой строке
    {
        if(sheet.getCell(0, i).value == keyValue) // нашли нужный столбец(с именем)
        {
            for(let j = 1; j < rows.length+1; j++) { // идём по всем значениям...

Liquit

Известный
283
108
ну типа
JavaScript:
const update = async (keyValue, oldValue, newValue) => {
    await doc.useServiceAccountAuth(creds, "google-spreadsheet@apt-task-352313.iam.gserviceaccount.com");
    await doc.loadInfo();
    const sheet = doc.sheetsByIndex[0];
    const rows = await sheet.getRows(); // preload
    await sheet.loadCells('A1:'+String.fromCharCode(65+sheet.columnCount-1)+rows.length+1); // подгружаем все нужные ячейки( ascii - код буквы "А" + количество столбцов - подгружаем к примеру от A1 до C8)
    for(let i=0; i < sheet.columnCount; i++) // идём по первой строке
    {
        if(sheet.getCell(0, i).value == keyValue) // нашли нужный столбец(с именем)
        {
            for(let j = 1; j < rows.length+1; j++) { // идём по всем значениям
                let cell = sheet.getCell(j, i); // получаем ячейку
                if(cell.value == oldValue) // если имя совпало
                {
                    sheet.getCell(j, i+1).value = newValue // меняем пост на новый
                    /*
                    * В таблице столбы имя и должность быть расположены рядом, иначе в методе getCell() нужно будет поменять на i+'расстояние между столбцами'
                    * ну типа:
                    * ____________________
                    * | name  | post     |
                    * | oleg  | loh      |
                    * | oleg1 | superloh |
                    * | oleg2 | megaloh  |
                    * --------------------
                     */
                    cell.save(); // сохраняем изменение
                    return; // умываем руки
                }
            }
        }
    }
};

update("name", "oleg", "ewe loh")
 
Статус
В этой теме нельзя размещать новые ответы.