見出し画像

【GAS】Google Apps Script 活用事例文字列をセル垂直方向に自動で揃えるスクリプト

今回はGoogle Spreadsheetで長文を入力したときに、垂直方向に中央揃えにしてくれると楽だなと思って、スクリプトを書いてみました。
セルの高さが15px以上になったら、自動で処理を実行するようにしてみました。

/**
 * 自動で文字列をセル垂直中央に配置する
 * 
 * 
 */
function autoVerticalAlignCenter() {
  const sheet       = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('シート名');
  const activeSheet = SpreadsheetApp.getActiveSheet();
  
  if(sheet.getName() !== activeSheet.getName()){
    console.warn(`対象シートではないため、処理を終了します。`);
    return
  };

  const activeCell = getActiveCell_(sheet);
  const rowHeight  = sheet.getRowHeight(activeCell.row);
  console.log(`rowHeight: ${rowHeight} px`);
  
  // 15px以上だったら、垂直方向を中央揃えにする
  if(15 < rowHeight){
    const range  = sheet.getRange(activeCell.row, 1, 1, sheet.getLastColumn());
    const values = range.getValues().map(row => row.map(value => 'middle'));
    range.setVerticalAlignments(values);

  }
}




/**
 * シートオブジェクトを引数にアクティブなセルの値、行、列などの情報を取得する
 * 
 * @param  {SpreadsheetApp.Sheet} sheet - シートオブジェクト
 * @return {Object.<number|string>}
 */
function getActiveCell_(sheet){

  const activeCell   = sheet.getActiveCell();
  const activeDetail = {
    sheetName: activeCell.getSheet().getName(),
    row:       activeCell.getRow(),
    column:    activeCell.getColumn(),
    value:     activeCell.getValue(),
    range:     activeCell.getA1Notation()
  }

  console.log(activeDetail);
  return activeDetail
}

トリガーの設定はこんな感じ


この記事が気に入ったらサポートをしてみませんか?