Я хотел бы прочитать ячейку таблицы 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]});
}
})()
@Tanaike Я хочу, чтобы команда запускалась только при обнаружении пользовательского ввода. Это мой главный вопрос
Мой второстепенный вопрос — прочитать ячейку H2 после того, как в нее записано H1.
Спасибо за ответ. Я должен извиниться за мое плохое знание английского языка. К сожалению, из двух ваших ответов я не смог понять ответ на 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, поэтому каждый раз, когда я использую любую из своих команд в боте, он будет консольно регистрировать result.data и записывать в ячейку, я хочу, чтобы она запускалась только при использовании команды check bl. Я пытаюсь удалить журнал консоли и получаю сообщение об ошибке.
Извините, я не умею объяснять, но после того, как я напишу в ячейку H1, я хочу прочитать H2. Я хочу сделать это ТОЛЬКО когда использую функцию черного списка
Спасибо за ответ. Я хотел бы поддержать вас. Но я должен еще раз извиниться за мое плохое знание английского. К сожалению, из вашего ответа я до сих пор не могу понять ваш вопрос. Но я хотел бы попытаться это понять. Когда я смогу это правильно понять, мне хотелось бы подумать о решении. Я был бы признателен, если бы вы простили мое плохое знание английского языка.
@Tanaike Еще раз извините, я обновил свой вопрос. Надеюсь, это поможет вам понять.
Спасибо за ответ и обновление вашего вопроса. У меня есть вопрос к вашему обновленному вопросу. Что касается I would like to read cell H2 as well.
, как вы будете получать значение из ячейки «H2»? Вы просто хотите получить значение из ячейки «H2?
В зависимости от значения ячейки «H1» при обновлении userInput
будет меняться значение ячейки «H2». И я хотел бы отобразить H2. Например, в моем interaction.commandname
вы видите .setDescription(
${userInput} is)
, он отображает пользовательский ввод, но я бы хотел, чтобы это было что-то вроде .setDescription(${userInput} is ${blackList[H2]}
)`
Я хочу прочитать ячейку H2 после обновления H1.
Спасибо за ответ. Из вашего ответа я предложил ответ. Пожалуйста, подтвердите это.
Спасибо за помощь, это работает, но как мне использовать value
вне функции?
Спасибо за ответ. По поводу вашего нового вопроса it works but how do i use value outside of the function?
, перед вашим новым вопросом, могу ли я спросить вас, сработал ли предложенный мной сценарий? Мой ответ на ваш вопрос I want to read cell H2 after H1 is updated
.
Что касается вашего нового вопроса, к сожалению, я не могу знать вашу реальную ситуацию. Но если вы вызовете функцию blackList
, например, из другой функции, как насчет const value = await blackList()
? И тогда добавьте return value
чуть ниже линии console.info(value);
в функции blackList
.
@Tanaike, это работает, но выдает ошибку, когда я использую его более одного раза, вы можете придумать что-нибудь, почему? Я обновлю свой текущий сценарий
Я считаю, что ваша цель состоит в следующем.
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);
}
await setTimeout(2000);
. Итак, пожалуйста, протестируйте с ним и без него и решите, используете ли вы его.setTimeout
можно использовать после Node.js 16. Будьте осторожны.
Я должен извиниться за мое плохое знание английского языка. К сожалению, я не могу понять ваш вопрос. В вашем вопросе, кажется, несколько вопросов. Могу ли я спросить вас о деталях вашего актуального вопроса? Кстати, в вашем сценарии показа по адресу
(async () => { ,,, })()
эта функция запускается автоматически при запуске сценария. Это ваш ожидаемый результат? Во-первых, мне хотелось бы правильно понять Ваш вопрос.