Google スプレッドシート: 指定値で行番号を特定 (Google Sheets: Find Row Number By Specified Value)
Google スプレッドシートの対象列から指定値が入っている行番号を特定します。
Configs
  • C1: OAuth2 設定 *
  • C2: ダウンロード元のスプレッドシートの ID *
  • C3: ダウンロード元のシートのタイトル *
  • C4: 対象列 (例 “A”, “B”) *
  • C5: 対象列の開始行 *
  • C6: 指定値を保持するデータ項目 *
  • C7: 特定した行番号を保存するデータ項目 *
Script (click to open)


  const oauth = configs.get( "conf_OAuth2" );
  const docId = configs.get( "conf_DataIdB" );
  const sheet = configs.get( "conf_DataIdC" );
  const col = configs.get( "conf_DataIdD" );
  const startRow = configs.get( "conf_DataIdE" );

  const key = engine.findDataByNumber( configs.get("conf_DataIdF") ) + "";
  const valDataDef = configs.get( "conf_DataIdG" );

  const range = col + startRow + ":" + col;

  const uri = `https://sheets.googleapis.com/v4/spreadsheets/${docId}/values/:batchGet`;
  const response = httpClient.begin()
    .authSetting( oauth )
    .queryParam( "ranges", `${sheet}!${range}` )
    .queryParam( "valueRenderOption", "UNFORMATTED_VALUE" )
    .queryParam( "majorDimension", "COLUMNS" )
    .get( uri );
  const status = response.getStatusCode();
  const responseStr = response.getResponseAsString();
  if (status !== 200) {
    const accessLog = `---GET request--- ${status}\n${responseStr}`;
    engine.log( accessLog );
    throw `Failed to get. status:${status}`;
  }
  const jsonObj = JSON.parse( responseStr );

  const keyList = jsonObj.valueRanges[0].values[0];

  let row = -1;
  for (let i = 0; i < keyList.length; i++) {
    if (keyList[i] == key) {
      row = parseInt(startRow) + i;
      break;
    }
  }

  //// == ワークフローデータへの代入 / Data Updating ==
  engine.setDataByNumber( valDataDef, row + "");

Download

2021-10-10 (C) Questetra, Inc. (MIT License)
https://support.questetra.com/ja/addons/google-sheets-find-row/
Addonファイルのインポートは Professional でのみご利用いただけます
自由改変可能な JavaScript (ECMAScript) コードです。いかなる保証もありません。

Notes

  • Google Sheets をマスタデータ管理データベースと考え、指定列を指定値(キー)で検索し、行番号を特定します。特定した行番号を使って、「Google スプレッドシート: 行取得」でデータ取得することを想定しています。

Capture

Appendix

%d人のブロガーが「いいね」をつけました。