Googleスプレッドシート(以下スプレッドシート)をそのまま共有する事はできますが、どこでも誰とでもあらゆる端末で気軽に見られるPDF形式で共有したい時があるのではないでしょうか。
PDFはスプレッドシートのメニューからマニュアルでも作成できますが、少しでも手間を減らすためにスクリプトを書いて実現できます。
スクリプトを書くなんて小難しいのでチョット面倒くさいですよね。
でも色々なところで少しずつ時間の節約をしていく事で大きな時間を生み出し、別の事にその時間を有効活用していきましょう。
今回は、10数行程度のGAS(Google Apps Script)で実現してみましょう。
PDFはマニュアルで次のように作成できます。
スプレッドシートのメニューバーより、ファイル>ダウンロード>PDFドキュメントで設定を確認し、エクスポートボタンをクリックすればPDFがローカルのダウンロードフォルダに生成されます。
ただこのようにPDFを生成するだけであれば通常問題なく出来ると思います。
これをGASのスクリプトを用いて一発で処理してみましょう。
同時にGoogleドライブに保存しメール送信もやってしまいます。
以下のスクリプトをエディターに張り付けてください。
念のためGoogleスプレッドシートからスクリプトエディタの出し方は、メニューバーのツール>スクリプトエディタと辿ります。
function createPdf(){
const folder = DriveApp.getFolderById('##################################');
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadsheet.getSheets()[0];
var pdfname = "スプレッドシート.pdf";
var pdf = spreadsheet.getAs('application/pdf');
SpreadsheetApp.getUi().alert("PDFをメールで送ります");
folder.createFile(pdf).setName(pdfname);
var email = Session.getActiveUser().getEmail();
var to = "**.....*@***....*****";
var subject = "納品スケジュール";
var body ="スケジュールを添付しましたので確認願います。";
GmailApp.sendEmail(to,subject,body,{attachments: pdf})}
[各コマンドの参考元:Google Developers https://developers.google.com/apps-script]
一行一行確認していきましょう。
function createPdf(){
//①シート情報一覧をPDFに変換する プロシージャをcreatePdf()として定義
const folder = DriveApp.getFolderById('##################################');
//②フォルダIDを指定
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
//③シートのIDを取得-1
var sheet = spreadsheet.getSheets()[0];
//④シートのIDを取得-2
var pdfname = "スプレッドシート.pdf";
//⑤シートの名前を取得
var pdf = spreadsheet.getAs('application/pdf');
//⑥PDFに変換
SpreadsheetApp.getUi().alert("PDFをメールで送ります");
//⑦スプレッドシート上にポップアップメッセージを出す
folder.createFile(pdf).setName(pdfname);
//⑧指定したフォルダにPDFファイルを生成
var email = Session.getActiveUser().getEmail();
//⑨作成したPDFファイルをメールに添付して送る
var to = "**.....*@***....*****";
//⑩送付するメールアドレスを書き込む
var subject = "納品スケジュール";
//⑪タイトルに名前をつける
var body ="スケジュールを添付しましたので確認願います。";
//⑫メール本文への記述内容を書く
GmailApp.sendEmail(to, subject, body, {attachments: pdf}) }
//⑬PDF添付したメールを送る
実行ボタンをクリックして何秒かするとスプレッドシート上にポップアップメッセージが出現し、OKボタンのクリックを催促されます。
OKボタンをクリックして、指定したフォルダにPDFが作成され且つメール送付が終了します。
成功すればの話です。
スクリプトの記述(張り付け)からコピペして、もしそのまま実行するのであれば次のようなエラーが出ます。
const folder = DriveApp.getFolderById('##################################');
の###..の部分にフォルダのIDを入れて下さい。
フォルダのIDって何を入れればいいの?
はい、Googleドライブあるいはドライブ下のフォルダのURLのfolders/以下の部分の緑色部分です。
https://drive.google.com/drive/folders/*********************************
メールアドレスも入れましょう。
つまりスクリプト青文字部分2箇所を入れ替えて下さいね。
事前にGoogleドライブ下にフォルダを作成しておきましょう。
うまく実行できた場合は指定フォルダにPDFファイルが作成されていて、且つGメールの送信済みフォルダにメールがあるはずです。
送信先としてGメール以外でも送信できるので先ずは試しに自分の別メールへ送ってみましょう。
又、スクリプト中の緑色部分の文は好きなように変えてみてくださいね。
いかがだったでしょうか?
うまく動かせたでしょうか?
場合によっては、プログラムが途中でとまってしまい実行に失敗する事もあるでしょう。
プログラムは上から順番に実行されるので、必ず止まってしまう所で何らかの原因があるはずです。
上手くいかなかったら、その部分の何が問題なのか不明であれば先頭に//を加えてコメントアウトするなり別のコマンドに変えてみるなりしてみましょう。
今回ご紹介したものでさらに細かな機能を追加したいなどお思いであれば、
コマンドスクリプトは色々な種類があるので色々試して命令を変えて、是非ともご自身の目的にあうプログラムに発展させてみて下さい。
コメントフォーム