目的
XLOOKUPでslack シートのB列のユーザー名に対応したD列のclassの値を取得したい
Googleフォームとスプレッドシートを連携すると、新しい行が追加されるため事前にセルにXLOOIUPなどの関数を事前にいれることができない
実行したこと
GASを使い対象の行にsetFormulaで指定したセルに式を代入する
コード
function getClass(){
//アクティブシート取得
var sheets = SpreadsheetApp.getActiveSpreadsheet();
//「"フォームの回答 1"」のシート情報を取得し「fmSheet」に代入
var fm =sheets.getSheetByName("フォームの回答 1");
//A列の最終行取得
var fmlastRowA = fm.getRange(fm.getMaxRows(), 1).getNextDataCell(SpreadsheetApp.Direction.UP).getRow();
//C列の最終行取得
var fmlastRowC = fm.getRange(fm.getMaxRows(), 3).getNextDataCell(SpreadsheetApp.Direction.UP).getRow();
for (i=fmlastRowA; i<=fmlastRowC; i++){
//値を入れたいセルを指定 最終行、O列
var cell = fm.getRange(i, 15);
//XLOOKUPで参照したいのでsetFormulaでXLOOKUPの関数をセルに入れる
//検索するデータの列,探す範囲の列,参照で取り出したいデータの列
cell.setFormula("=XLOOKUP(C:C,slack!B:B,slack!E:E)");
//A列のフラグに文字を入力する
fm.getRange(i, 1).setValue("SlackOK");
}
}