前提
GASのRangeを変数指定で取る場合getValuesの結果がベタ打ちと異なる理由が知りたい
指定列から名称一致する行を特定して、列ごと取ってきてなんやかんやする処理を作ろうとしていました。
行数は特定できるのですが、欲しい範囲の値を取ろうとすると書き方次第で結果が異なります。
いまいち理由が分からないので、わかる方いたら教えて頂きたいです
発生している問題・エラーメッセージ
特定した行を指定して、1~30列まで取りたい。
ただ、Rangeを別変数にするかどうかで結果がずれます
// 表から対象を探す // 1列目の欲しいとこまで let range1 = sheet2.getRange(1,1,106,1); let datas = range1.getValues(); // 対象行特定(配列は0~105なので1足してるだけ) let index = datas.findIndex(el => el == name) + 1; let Range = sheet2.getRange(index,1,1,30); let datas1 = sheet2.getRange(index,1,1,30).getValues(); let datas2 = Range.getValues();
datas1は意図通り。
datas2はデバックしてる限り、その1行上が取れています。
なお、こんな感じでベタ打ちで行指定した場合は値が同じでした。
const test = sheet2.getRange(2,1,1,30); let testVal = test.getValues(); let testVal2 = sheet2.getRange(2,1,1,30).getValues();
どのように、datas1とdatas2が相違しているのを確認してますか?
以下で試してみましたが、相違は確認できませんでした。
console.log(datas1);
console.log(datas2);
コードは一部だけを載せるのではなく、すぐに再現ができるように全部を掲載した方が、回答者も検証がしやすいです。
すみません、1行ずつだと重くなるのでまとめて取るようにしたんで、
そこのソースもう残ってないです。
ただ、たぶんですが、2番目の変数のところにうっかりブレークポイントでも貼ってたのかもしれないです
初回が毎回undefinedで、次のループは取りたい1個前のが取れてたので。
夜中の暇つぶしだったんで、寝ぼけて位置おかしいまま更新前の変数の値と見比べてたとしか考えられないです
普通に考えたらよほど変なことしない限り同じはずですし
つまり、相違しないことが確認できたのでしょうか?

回答1件
あなたの回答
tips
プレビュー