0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【GAS】GASでvlookup的なことをする

Last updated at Posted at 2024-05-22

やりたいこと

GASでスプシを読み込んで、スプシのデータに対してvlookup的なことをしたい

サンプル

ID 品名 単価(円) 在庫数
1 トマト 80 20
2 キャベツ 160 10
3 レタス 120 13
4 きゅうり 40 35
5 ピーマン 50 30
6 じゃがいも 35 40

実装

コード

lookupTest.gs
function lookupTest() {
  //シートを宣言
  const Sheet = SpreadsheetApp.openById("hoge").getSheetByName("シート1");

  //キー配列を取得
  const keys = Sheet.getRange(2, 1, Sheet.getLastRow() -2+1).getDisplayValues().flat();
  //データ配列を取得
  const data = Sheet.getRange(2, 1, Sheet.getLastRow() -2+1, Sheet.getLastColumn()).getDisplayValues();

  const inner_row = {id:1, name:2, price:3, stock:4};

  //例…IDが4の品の在庫数を取得
  const example1 = data[keys.indexOf("4")][inner_row.stock -1];
  console.log("IDが1の品の在庫数:"+ example1);
}

結果

IDが1の品の在庫数:35

メモ

・vlookupでいう検索キーを1次元配列で別に抜いておいて、データ全体の2次元配列からindexOfの返り値で行番号を指定するイメージ
・vlookupと違ってkeysの列がデータ内のどこでもいい、データの範囲外でもいい
・行方向はindexOfそのままでいいけど、列方向はスプシの列番号 -1しないとずれる

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?