Milk+ea

Weblog Is My Hobby.

スプレッドシートをストライプ柄にするスクリプト

はじめてのGoogleAppsScript。

一番左上になるセルと、その右のセルに背景色を設定しておいて、適当な範囲を選択。
あとは、ストライプ(縦)を実行。 none
none

右じゃなくて下のセルに背景色を設定した場合は、ストライプ(横)を実行。 none
none


スクリプト

function onOpen() {
  var a = SpreadsheetApp.getActive();
  var menuItems = [
    { name: 'ストライプ(縦)', functionName: 'toVerticalStripe' },
    { name: 'ストライプ(横)', functionName: 'toHorizontalStripe' }
  ];
  a.addMenu('レイアウト', menuItems);
}

function toVerticalStripe() {
  var as = SpreadsheetApp.getActiveSheet(),
      range = as.getActiveRange(),
      numRows = range.getNumRows(),
      numCols = range.getNumColumns(),
      posRow = range.getRow(),
      posCol = range.getColumn(),
      bgcOdd = as.getRange(posRow, posCol).getBackground(),
      bgcEven = as.getRange(posRow, posCol+1).getBackground(),
      halfCount = Math.ceil(numCols / 2),
      target = null;
  
  range.setBackground(bgcEven);
  while(halfCount--) {
    as.getRange(posRow, posCol, numRows).setBackground(bgcOdd);
    posCol += 2;
  } 
}

function toHorizontalStripe() {
  var as = SpreadsheetApp.getActiveSheet(),
      range = as.getActiveRange(),
      numRows = range.getNumRows(),
      numCols = range.getNumColumns(),
      posRow = range.getRow(),
      posCol = range.getColumn(),
      bgcOdd = as.getRange(posRow, posCol).getBackground(),
      bgcEven = as.getRange(posRow+1, posCol).getBackground(),
      halfCount = Math.ceil(numRows / 2),
      target = null;
  
  range.setBackground(bgcEven);
  while(halfCount--) {
    as.getRange(posRow, posCol, 1, numCols).setBackground(bgcOdd);
    posRow += 2;
  } 
}

onOpen()で、スプレッドシートのメニューにレイアウトという項目を作成されるので、そこからスクリプトを選んで実行!
none