Как я могу читать и писать в ячейки одной и той же функции?

Я хотел бы прочитать ячейку таблицы H2 той же функцией blackList

С помощью этого сценария я сейчас пишу в ячейку H1. Я также хотел бы прочитать ячейку H2.

Это мой обновленный скрипт:

const { setTimeout } = require("timers/promises"); // cause a delay if needed

async function blackList() { 
    const sheets = google.sheets({ version: "v4", auth });
    const spreadsheetId = "myidhere";
  
    const sheetName = "BOTDATA";
    const cells = ["H1"];
    const valueInputOption = "USER_ENTERED";
    const userInput = interaction.options.get('steamid').value;
    await sheets.spreadsheets.values.update({
      spreadsheetId,
      range: `'${sheetName}'!${cells[0]}`,
      resource: { values: [[userInput]] },
      valueInputOption,
    });
     await setTimeout(1000); // set time on delay if needed

    const obj = await sheets.spreadsheets.values.get({spreadsheetId, range: `'${sheetName}'!H2`});
    const value = obj.data.values[0][0];
   // console.info(value);
    return value;
  }

  (async()=>{

if (interaction.commandName === 'checkbl') {
    //blackList();
    const userInput = interaction.options.get('steamid').value;
    const value = await blackList()
    const bl = new EmbedBuilder()
    .setTitle('Blacklist Checker')
    .setDescription(`${userInput} is ${value}`)
    .setColor('Red')
    .setThumbnail('https://i.imgur.com/9GKhYQf.png')
    .setFooter({text: 'DroneOS', iconURL: 'https://i.imgur.com/9GKhYQf.png'})
    .setTimestamp()

    interaction.reply({ embeds: [bl]});

}

})()

Я должен извиниться за мое плохое знание английского языка. К сожалению, я не могу понять ваш вопрос. В вашем вопросе, кажется, несколько вопросов. Могу ли я спросить вас о деталях вашего актуального вопроса? Кстати, в вашем сценарии показа по адресу (async () => { ,,, })() эта функция запускается автоматически при запуске сценария. Это ваш ожидаемый результат? Во-первых, мне хотелось бы правильно понять Ваш вопрос.

Tanaike 30.07.2024 03:25

@Tanaike Я хочу, чтобы команда запускалась только при обнаружении пользовательского ввода. Это мой главный вопрос

famq 30.07.2024 10:14

Мой второстепенный вопрос — прочитать ячейку H2 после того, как в нее записано H1.

famq 30.07.2024 10:29

Спасибо за ответ. Я должен извиниться за мое плохое знание английского языка. К сожалению, из двух ваших ответов я не смог понять ответ на By the way, in your showing script, at (async () => { ,,, })(), this function is automatically run when the script is run. Is this your expected result?. А как вы поступите My secondary question в этом вопросе?

Tanaike 30.07.2024 14:13

@Tanaike, поэтому каждый раз, когда я использую любую из своих команд в боте, он будет консольно регистрировать result.data и записывать в ячейку, я хочу, чтобы она запускалась только при использовании команды check bl. Я пытаюсь удалить журнал консоли и получаю сообщение об ошибке.

famq 31.07.2024 07:06

Извините, я не умею объяснять, но после того, как я напишу в ячейку H1, я хочу прочитать H2. Я хочу сделать это ТОЛЬКО когда использую функцию черного списка

famq 31.07.2024 07:10

Спасибо за ответ. Я хотел бы поддержать вас. Но я должен еще раз извиниться за мое плохое знание английского. К сожалению, из вашего ответа я до сих пор не могу понять ваш вопрос. Но я хотел бы попытаться это понять. Когда я смогу это правильно понять, мне хотелось бы подумать о решении. Я был бы признателен, если бы вы простили мое плохое знание английского языка.

Tanaike 31.07.2024 07:33

@Tanaike Еще раз извините, я обновил свой вопрос. Надеюсь, это поможет вам понять.

famq 31.07.2024 09:28

Спасибо за ответ и обновление вашего вопроса. У меня есть вопрос к вашему обновленному вопросу. Что касается I would like to read cell H2 as well., как вы будете получать значение из ячейки «H2»? Вы просто хотите получить значение из ячейки «H2?

Tanaike 31.07.2024 14:39

В зависимости от значения ячейки «H1» при обновлении userInput будет меняться значение ячейки «H2». И я хотел бы отобразить H2. Например, в моем interaction.commandname вы видите .setDescription(${userInput} is), он отображает пользовательский ввод, но я бы хотел, чтобы это было что-то вроде .setDescription(${userInput} is ${blackList[H2]})`

famq 31.07.2024 21:57

Я хочу прочитать ячейку H2 после обновления H1.

famq 31.07.2024 22:04

Спасибо за ответ. Из вашего ответа я предложил ответ. Пожалуйста, подтвердите это.

Tanaike 01.08.2024 02:53

Спасибо за помощь, это работает, но как мне использовать value вне функции?

famq 01.08.2024 09:48

Спасибо за ответ. По поводу вашего нового вопроса it works but how do i use value outside of the function?, перед вашим новым вопросом, могу ли я спросить вас, сработал ли предложенный мной сценарий? Мой ответ на ваш вопрос I want to read cell H2 after H1 is updated.

Tanaike 01.08.2024 14:24

Что касается вашего нового вопроса, к сожалению, я не могу знать вашу реальную ситуацию. Но если вы вызовете функцию blackList, например, из другой функции, как насчет const value = await blackList()? И тогда добавьте return value чуть ниже линии console.info(value); в функции blackList.

Tanaike 01.08.2024 14:24

@Tanaike, это работает, но выдает ошибку, когда я использую его более одного раза, вы можете придумать что-нибудь, почему? Я обновлю свой текущий сценарий

famq 01.08.2024 21:45
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
16
81
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я считаю, что ваша цель состоит в следующем.

  • Вы хотите поместить значение в ячейку «H1» и получить значение из «H2». Из Depending on the value of the cell 'H1' is when the userInput is updated, it will change cell "H2" Value. And i would like to display H2. кажется, что значение «H2» заменяется значением «H1».

В этом случае как насчет следующей модификации?

Модифицированный скрипт:

const { setTimeout } = require("timers/promises"); // added

async function blackList() {
  const sheets = google.sheets({ version: "v4", auth });
  const spreadsheetId = "myIdhere";

  const sheetName = "BOTDATA";
  const cells = ["H1"];
  const valueInputOption = "USER_ENTERED";
  const userInput = interaction.options.get("steamid").value;
  await sheets.spreadsheets.values.update({
    spreadsheetId,
    range: `'${sheetName}'!${cells[0]}`,
    resource: { values: [[userInput]] },
    valueInputOption,
  });

  await setTimeout(2000); // Please adjust this value to your situation.

  const obj = await sheets.spreadsheets.values.get({spreadsheetId, range: `'${sheetName}'!H2`});
  const value = obj.data.values[0][0];
  console.info(value);
}
  • В этой модификации после помещения значения в ячейку «H1» извлекается значение ячейки «H2».
  • В данной модификации установлено время ожидания расчета по формуле «Н2». Но у меня нет информации о вашей реальной ситуации. Итак, я не уверен, нужно ли использовать await setTimeout(2000);. Итак, пожалуйста, протестируйте с ним и без него и решите, используете ли вы его.

Примечание:

  • setTimeout можно использовать после Node.js 16. Будьте осторожны.

Другие вопросы по теме