donguri30
@donguri30

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

GASでスプシから取得した配列から列番号の検索方法

GASでスプシから取得した配列を活用できません。

プログラミング初心者です。
グーグルスプレッドシートにて、シートAに入力した内容をシートBに転記するシステムを作成しています。
特定行の文字列を検索して取得した列番号から処理を進めることを考えています。

しかし、getValuesにて配列取得した数値情報を使って列番号を取得することができません。

下記はサンプルコードですが、
・サンプルのように数値を検索するシステムを考えています。
・配列をコード内にベタ打ちすると正しく検索されました。
・配列をシートから取得すると検索ヒットしませんでした。

シートから取得した配列でも検索ヒットさせるにはどうすればいいのでしょうか?

function indexNumber_test() {

//スプレッドシートを特定
const SpreadSheet = SpreadsheetApp.openById("XXX");
const Sheet = SpreadSheet.getSheetByName("sheet1");

//検索値を取得
var testNum = FromSheet.getRange(1,15).getValue();

//検索先の情報を取得
const valuesA = [13,7,84,9,92,77,208,21,967,6,901,261,308,302,180,343];
const valuesB = FromSheet.getRange(1,1,1,16).getValues();

//検索
console.log(valuesA.indexOf(180)); //15
console.log(valuesA.indexOf(testNum)); //15
console.log(valuesB.indexOf(180)); //-1

}

0

1Answer

@donguri30さん

const valuesB = FromSheet.getRange(1,1,1,16).getValues();

valuesBの中身をconsole.logで確認されたでしょうか。
多重配列になっているはずです。

多重配列に対して直接indexOfを使っているから、想定した値(列番号)が取得できないだけだと思います。

1Like

Comments

  1. @donguri30

    Questioner

    ありがとうございます。
    ヒントを基にflatメソッドで1次元配列に変換することにたどり着いて下記を入力したところ、意図通りに動きました。

    console.log(valuesB.flat(1).indexOf(180)); //15

Your answer might help someone💌