LANG SELRCT

コードを書く場所

2019年5月6日月曜日

ヘッダのテキストに一致する列に入力する(複数行)



このシートのB列に


スクリプトでデータを一気に入れたい


2列目を決め打ちするのではなく
一行目で B列 という文字を見つけてその列に入力したい

そのために
getTargetCol(sheet, value){} という関数を作って
その中の getHeaders(sheet){} で一行目の文字列をすべて取得して
headers.indexOf(value)+1 で対象の列を見つけて
range.setValues(values) で値を一気に入れます



コード.gs
function setValuesToCol() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var value = 'B列';
  var targetCol = getTargetCol(sheet, value);
  var lastRow = sheet.getLastRow();
  var values = [];
  for(var row = 2; row < lastRow+1; row++) {
    var value = 'abc' + row;
    values.push([value]);
  }
  var range = sheet.getRange(2, targetCol, values.length, 1);
  range.setValues(values)
}

function getTargetCol(sheet, value) {
  var headers = getHeaders(sheet)[0];//ヘッダ行(一行目)[[,,,]]の[0]を取得する
  var col = headers.indexOf(value) + 1;//ヘッダの中で対象のvalueを探す
  return col;
}

function getHeaders(sheet) {
  var last_col = sheet.getLastColumn();
  var range = sheet.getRange(1, 1, 1, last_col);
  var headers = range.getDisplayValues();
  return headers;
}


関連記事

ヘッダのテキストに一致する列に入力する