22
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

スプレッドシートにある複数シートのうち、1つのシートだけエクセルでダウンロードしたい

Posted at

はじめに

お仕事でスプレッドシートにある複数シートのうち、一つのシートだけをエクセル変換するする必要があったのでその方法メモです。

スプレッドシートにもともと備わってるダウンロード機能

メニューの ファイル -> ダウンロード からエクセルダウンロードできる機能がありますが、これだと全部のシートが出力され、不要なシートを削除しなければならず少し面倒です。
image.png

特定のシートだけをエクセルダウンロード

以下の形式のURLをブラウザからたたけば特定のシートだけをエクセルダウンロードできます。

  • ダウンロードURL ...
    https://docs.google.com/spreadsheets/d/{スプレッドシートID}/export?format=xlsx&gid={シートID}

URLの スプレッドシートID とは開いてるスプレッドシートの①の部分、シートID は②の部分です。
image.png

ちなみに、 exprot?format=pdf にするとpdfダウンロードもできます。

gasでダウンロードダイアログ表示

ブラウザに入力するのは面倒なので、ダウンロード用のURLをgas側で生成し、ダイアログに表示することができます。
image.png

  • 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を割り当てればダウンロードボタンの出来上がりです。
image.png

以上です :cat:

22
15
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
22
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?