ユーザーの基本的な統計情報を保存、読み取り、更新することを目的として、glitch.com でホストしている Discord ボットがあります。この設定により、プロジェクトがスリープ状態になるたびに変数がリセットされるため、Google Sheets API を正常に設定して、ユーザーの統計を別の場所に永続的に保存できるようにしました。しかし、私の JavaScript 変数が実際にスプレッドシートから値を取得する方法を理解することはできません。
私の最初のコードには、各メンバーのさまざまな統計を格納する変数がたくさんありました。次に例を示します。
var User1Gold = 0
var User2Gold = 0
等々。これは、私のような初心者の愛好家にとって非常に簡単に作業できましたが、今ではドキュメントを何度も読んでいて (私が求めている答えはここにあるのではないかと思います)、明確に何も得られませんでした。私の変数を特定のスプレッドシートの特定のセルと等しくして、それで完了する方法はありますか、それともそれほど簡単ではありませんか? おそらく次のようなものです:
var User1Gold = {spreadsheetId: 'iD', range: 'B3',};
編集
わかった!前に進みました!ボットがスプレッドシートにアクセスして特定の値を見つけ、その値を含むメッセージを送信することができました。一度しかできないように見えることを除いて、私が望んでいたことは何ですか?これは、変数がスプレッドシートの 1 つのセルと等しくなるように微調整した API に付属のサンプル コードです。
var myvariable
function getvalue(auth) {
const sheets = google.sheets({version: 'v4', auth});
sheets.spreadsheets.values.get({
spreadsheetId: 'SpreadsheetId',
range: 'Sheet1!B3',
}, (err, res) => {
if (err) return console.log('The API returned an error: ' + err);
const rows = res.data.values;
if (rows.length) {
rows.map((row) => {
myvariable = (`${row[0]}`);
});
} else {
console.log('No data found.');
}
});
}
これは意図したとおりに機能しますが、スプレッドシートから複数の値 (ユーザーのヘルス ポイント、コインなど) を参照したいのは明らかです。しかし、変数と関数に別の名前を付けて、上記をもう一度コピーして貼り付けると、うまくいきません。エラーメッセージが表示されます:
(ノード:2930) UnhandledPromiseRejectionWarning: DiscordAPIError: Missing Permissions
私は何を間違っていますか?最初の関数にはパーミッションがあるように見えるのに、2 番目の同一の関数にはパーミッションがないのはなぜですか? 取得したい値ごとに関数を宣言するよりも簡単な方法はありますか?
編集 2
エラーを修正できましたが (正直なところわかりません)、問題は解決しません。スプレッドシートから 2 番目の値を取得して 2 番目の変数に代入する 2 番目の関数を作成できません。コンソールにエラーは表示されませんが、最初の関数 (例の関数) は問題なく動作しますが、プログラムは単純にそれを実行しません。