読者です 読者をやめる 読者になる 読者になる

技術のメモ帳

気が向いたときに書いてます

[GAS]シートの行列の幅と高さを変更して方眼紙化する

今回は、Google Apps Scriptを使って、表示中のシートの行列の幅と高さを変更し、いわゆる、エクセル方眼紙化する関数を実装してみます。

以下が仕様となります。

  1. メニューから関数を実行
  2. promptで幅を入力
  3. すべての行列が2の幅に変更される

実装したコード

行列の幅を変更するメソッドは、SheetクラスのsetColumnWidth()setRowHeight()にあたりますので、シンプルに入力した値をそれらメソッドに渡します。

なお、Spreadsheetでは、ColumnsはZ列まで、Rowsは1000行まで指定できるようです。

実装したコードは次のようになりました。

function onOpen() {
  var ui = SpreadsheetApp.getUi();
  ui.createMenu('Script').addItem('GraphPaperize', 'GraphPaperize').addToUi();
}

function onEdit() {
  onOpen();
}

function GraphPaperize() {
  var ui          = SpreadsheetApp.getUi(),
      sheet       = SpreadsheetApp.getActiveSheet(),
      response    = ui.prompt('Enter width/height of cells (default 15):'),
      defaultSize = 15;

  if (response.getSelectedButton() == ui.Button.OK) {
    var inputSize = parseInt(response.getResponseText()),
        size      = (inputSize > 0) ? inputSize : defaultSize;
    for(var i = 1; i <= 1000; i++) {
      sheet.setRowHeight(i, size);
      if (i <= 26) sheet.setColumnWidth(i, size);
    }
  }
}

動作確認

関数を実行すると、次のようになります。

▼実行前のシート

▼promptでサイズを入力します。

▼方眼紙のようになりました。

参考リンク

Class Sheet  |  Apps Script  |  Google Developers