Я создаю бота Discord и хочу написать в определенную ячейку в таблицах Google. С помощью этого кода я могу опубликовать пользовательский ввод во встраивании, когда команда выполняется в Discord.
Однако код возвращает ошибку: «Отсутствует диапазон» и не пишется в таблицах Google.
По сути, я хочу, чтобы пользователь использовал команду «/checkbl steamidhere». «steamidhere» будет любым пользовательским вводом. Запишите этот пользовательский ввод в ячейку H1 листов Google.
Это мой код, который я сейчас использую:
async sample() {
const sheets = google.sheets({ version: "v4", auth });
const spreadsheetId = "1lEB9fEqZUNtR0Tq-gzHVVaQ2eQvxsuiwXSTW3VGC2xw";
const sheetName = "BOTDATA";
const cells = ["H1"];
const valueInputOption = "USER_ENTERED";
const userInput = "sample value";
const result = await sheets.spreadsheets.values.update({
spreadsheetId,
range: `'${sheetName}'!${cells[0]}`,
resource: { values: [[userInput]] },
valueInputOption,
});
console.info(result.data);
}
sample();
Я считаю, что ваша цель состоит в следующем.
userInput
из const userInput = interaction.options.get('steamid').value;
в ячейку «H1» листа «BOTDATA».В этом случае как насчет следующей модификации? В этой модификации функция readBlacklist()
не используется. В ячейку «H1» листа «BOTDATA» помещается только значение userInput
.
const userInput = interaction.options.get('steamid').value;
const bl = new EmbedBuilder()
const userInput = interaction.options.get('steamid').value;
// --- I added the below script.
const spreadsheetId = "myspreadsheetID";
const sheetName = "BOTDATA";
const cells = ["H1"];
const valueInputOption = "USER_ENTERED";
// const userInput = "sample value"; // This is a sample value. In your situation, "const userInput = interaction.options.get('steamid').value;" is used.
const result = await sheets.spreadsheets.values.update({
spreadsheetId,
range: `'${sheetName}'!${cells[0]}`,
resource: { values: [[userInput]] },
valueInputOption,
});
// console.info(result.data); // If you want to confirn the returned value, please use this.
// ---
const bl = new EmbedBuilder()
userInput
помещается в ячейку «H1» листа «BOTDATA».sheets
можно использовать для помещения значений в электронную таблицу с помощью Sheets API. Пожалуйста, будьте осторожны с этим.Судя по вашему следующему ответу,
Я обновил свой первоначальный вопрос, указав модификацию и ошибку, которую я получаю.
и, после вашей новой ошибки,
К сожалению, я получаю TypeError: (промежуточное значение)(...) не является функцией
К сожалению, я не могу повторить вашу новую ошибку. Меня беспокоит, связана ли ваша новая ошибка с моим сценарием. Итак, чтобы проверить это, протестируйте следующий скрипт. В дополнительном скрипте используется только мой скрипт. Если возникнет такая же ошибка, пожалуйста, сообщите мне.
async function sample() { // <--- Modified
const sheets = // Please use your client
const spreadsheetId = "###"; // Please set your spreadsheet ID.
const sheetName = "BOTDATA";
const cells = ["H1"];
const valueInputOption = "USER_ENTERED";
const userInput = "sample value";
// const sheets = google.sheets({ version: "v4", auth }); // Please remove this line.
const result = await sheets.spreadsheets.values.update({
spreadsheetId,
range: `'${sheetName}'!${cells[0]}`,
resource: { values: [[userInput]] },
valueInputOption,
});
console.info(result.data);
}
sample();
@famq Спасибо за ответ. Что касается вашей новой ошибки TypeError: (intermediate value)(...) is not a function
, к сожалению, мой модифицированный скрипт не использует intermediate value
. Меня беспокоит, связана ли ваша новая ошибка с моим сценарием. Поэтому, чтобы это проверить, протестируйте дополнительный скрипт. В дополнительном скрипте используется только мой скрипт. Если возникнет такая же ошибка, пожалуйста, сообщите мне.
@famq Кстати, в обновленном скрипте удалите const write = await readBlacklist(['test']);
и console.info(write);
. В моей модификации readBlacklist
не используется, как указано в моем ответе. Потому что ваш readBlacklist
неправильный. Пожалуйста, будьте осторожны с этим.
Хорошо, извините, я удалил const write = await readBlacklist(['test'])
и console.info(write);
, но ошибка все равно выдавалась. Я удалил весь свой код и заменил его вашим «Добавленным» кодом, и получаю эту ошибку cannot redeclare blocked-scoped variable 'sheets'
@famq Я должен извиниться за свои очень-очень плохие навыки. Я заметил, что в добавленном скрипте я забыл удалить использованный клиент const sheets = google.sheets({ version: "v4", auth });
. Ваша новая ошибка cannot redeclare blocked-scoped variable 'sheets'
связана с этим. Поэтому, пожалуйста, удалите его. Причина, по которой я забыл его удалить, связана с моими очень-очень плохими навыками. Я еще раз глубоко извиняюсь за свои очень-очень плохие навыки.
с этим новым скриптом у меня здесь есть только ваш скрипт, и я вижу 2 ошибки: Unexpected keyword or identifier.
и ';' expected.
одна для асинхронности, а другая для "{" в конце.
@famq Спасибо за ответ. Во-первых, когда я протестировал добавленный скрипт, ошибок не произошло. Что касается with this new script i have only your script here and am seeing 2 errors: Unexpected keyword or identifier. and ';' expected. One is for async and the other for the "{" at the end of it
, в данном случае я думаю, что это связано с вашим реальным сценарием. Я беспокоюсь, что вы можете неправильно скопировать и вставить мой сценарий. Итак, пожалуйста, подтвердите это еще раз. Если вы не можете его понять, предоставьте свой текущий сценарий, чтобы его можно было правильно воспроизвести.
Я пошел дальше и заменил весь файл index.js исходным сообщением с вопросом. Мой вопрос связан со строкой 244 — КОМАНДА CHECKBL.
@famq Спасибо за ответ. Что касается Ive gone ahead and replaced my entire index.js file into my original question post. My question is related to line 244 - CHECKBL COMMAND
, когда я увидел ваш сценарий показа, я забеспокоился, что ваш добавленный сценарий слишком большой. Мой добавленный сценарий очень прост. Чтобы просто протестировать, я бы рекомендовал тестировать только добавленный мною скрипт, включая ваш клиент, без других частей. Кстати, когда я тестировал только ваш показ sample()
с действительным клиентом, ошибок не возникало. Итак, я беспокоюсь, что причиной вашей нынешней проблемы могут быть другие части тела.
Я создал новый js-файл. и я все еще получаю те же две ошибки.
@famq Я заметил, что вы обновили свой вопрос. А как насчет изменения async sample() {
на async function sample() {
в вашем сценарии?
Хорошо, я сожалею об этом, в одной из ваших предыдущих модификаций это было написано так, но я это исправил, и это работает! Большое спасибо! Теперь это работает!
@famq Спасибо за ответ. Я рад, что ваша проблема была решена.
Еще раз извините, я получаю ответ «выборочное значение» в ячейку H1 на листе Google. Как мне заменить это тем, что набрал пользователь? Обновлено: Я заменил переменную userInput на то, что хочу использовать, и это работает! Извините, еще раз спасибо за помощь!
Итак, если бы я хотел прочитать «H2» и записать «H1», нужно ли мне было бы создать для этого две разные асинхронные функции? Извините, что задаю так много вопросов, я просто хочу убедиться, что правильно понимаю.
Я действительно столкнулся с проблемой: когда я меняю userInput на interaction.options.get('steamid').value;
, это работает, но все остальные мои команды не работают, я предполагаю, что ввод поступает от асинхронной команды, и я не могу редактировать функцию? Можете ли вы помочь мне с этим, если это возможно?
@famq По поводу твоего нового вопроса Ive actually come across an issue, When i change userInput to interaction.options.get('steamid').value; it works, but all my other commands do not work, im assuming because the input is coming from the async command, and i cannot edit a function? Can you please help me with this if possible.
, я бы хотел тебя поддержать. Итак, можете ли вы опубликовать это как новый вопрос, включив дополнительную информацию? Если вы можете помочь в решении вашего нового вопроса, я буду рад. Можете ли вы сотрудничать, чтобы сделать это?
Только что опубликовал, еще раз спасибо.
Я обновил свой первоначальный вопрос, указав модификацию и ошибку, которую я получаю.