この記事は GAS道場 Advent Calendar 2019 の14日目の記事です。 Google Apps Script(GAS)をこれから使おうという方向けのアドベントカレンダーになります。
今回は、スプレッドシート上のヘッダーメニューからスクリプトを実行するカスタムメニューを作成したいと思います。
カスタムメニューとは
公式のドキュメントはこちらになります。
こちらを参考に、今回も再びアドベントカレンダー3日目に作成した行と列を転置するスクリプトを使いたいと思います。
今回のことができれば、このようにヘッダーにカスタムメニューが作成され、以下のようなメニューからスクリプトを実行できるようになります。
スクリプト
以下がソースコードになります。
function onOpen() { var ui = SpreadsheetApp.getUi(); ui.createMenu('カスタムメニュー') .addItem('転置するよ', 'test4') .addToUi(); } function test4() { // 現在のアクティブなスプレッドシートを読み込む var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); // 現在のアクティブなシートを読み込む var sheet = SpreadsheetApp.getActiveSheet(); var data = sheet.getDataRange().getValues(); data = transpose(data) Logger.log(data); sheet.clear(); var rows = data.length; var cols = data[0].length; sheet.getRange(1,1,rows,cols).setValues(data); } function transpose(a) { return Object.keys(a[0]).map(function (c) { return a.map(function (r) { return r[c]; }); }); }
onOpen()以外はすべて3日目のスクリプトのコピペになります。onOpenを作成することで、スプレッドシートを開いたタイミングで実行されるようになります。この関数の処理でヘッダーのメニューにカスタムメニューという名前のメニューが追加され、転置するよという項目が追加されます。そこに転置する処理の関数名を入れてあります。
実行
実行は簡単、上のメニューから転置するよ項目を押すだけ。押すだけで行と列が転置してくれます。
さいごに
以上のように、カスタムメニューはスプレッドシートを扱うときに簡単にスクリプトを呼べるメニューになると思うので、スプレッドシートの作業の自動化などにはとても向いているんじゃないかなと思います。