はじめに
お仕事でスプレッドシートにある複数シートのうち、一つのシートだけをエクセル変換するする必要があったのでその方法メモです。
スプレッドシートにもともと備わってるダウンロード機能
メニューの ファイル
-> ダウンロード
からエクセルダウンロードできる機能がありますが、これだと全部のシートが出力され、不要なシートを削除しなければならず少し面倒です。
特定のシートだけをエクセルダウンロード
以下の形式のURLをブラウザからたたけば特定のシートだけをエクセルダウンロードできます。
- ダウンロードURL ...
https://docs.google.com/spreadsheets/d/{スプレッドシートID}/export?format=xlsx&gid={シートID}
URLの スプレッドシートID とは開いてるスプレッドシートの①の部分、シートID は②の部分です。
ちなみに、 exprot?format=pdf
にするとpdfダウンロードもできます。
gasでダウンロードダイアログ表示
ブラウザに入力するのは面倒なので、ダウンロード用のURLをgas側で生成し、ダイアログに表示することができます。
- gasのコード
function myFunction() {
// 選択中のスプレッドシート
var ss = SpreadsheetApp.getActiveSpreadsheet();
var spreadSheetId = ss.getId();
var sheetId = ss.getSheetId();
var url = 'https://docs.google.com/spreadsheets/d/' + spreadSheetId + '/export?format=xlsx&gid=' + sheetId;
// ダイアログ表示
var html = HtmlService.createHtmlOutput('<p>リンクをクリックしてダウンロードしてください。</p>')
.append('<p style="text-align:center;"><a href="' + url +'" style="text-align: center;">Dwonload<a/></p>')
.append('<div style="text-align:right;"><input type="button" value="Close" onclick="google.script.host.close()" /></div>')
.setWidth(300).setHeight(200);
SpreadsheetApp.getUi().showModalDialog(html, 'ダウンロード');
}
例えばダウンロードしたいスプレッドシート上に↓みたいな画像挿入して、スクリプトを割り当て
で作ったmyFunctionを割り当てればダウンロードボタンの出来上がりです。
以上です