PR

【初心者】スプレッドシートのデータを自動でPDF化してメールで送る方法

売上をPDF化して自動送信 AI活用

こんにちは、ワン太です。

毎日入力する売上データやレポートを、決まった時間に自動でPDFにしてメールで送信できたら便利だと思いませんか?

今回はGoogle Apps Script (GAS) を活用して、スプレッドシートをPDF化し、指定のメールアドレスに自動送信する初歩的なプログラムの作り方をご紹介します。

この記事を読むと、具体的にこんなことができるようになります!

  • AIにプログラムの指示をして実際に書いてもらい
  • スプレッドシートの特定シートを PDF に変換して
  • PDFに変換、メールに添付して送信するスクリプトをつくり
  • 毎日決まった時間に自動実行する方法を習得できる

とても簡単な作業で、さまざまな自動化に応用できつつ、初歩的な内容となっているので、ぜひスキルアップしたい方は読んでみてください。

無料のGPTでもGeminiでもできるので、プログラムを覚える必要は一切ないですよ。

Google Apps Script(GAS)とは?

Google Apps Script(GAS) は、Google が提供する無料プログラムツールで、エクセルでいうところのVBAのようなものです。

Google ドキュメントやスプレッドシート、Gmail、Google ドライブなどの Google サービスを自動化することができます。

初心者でも扱いやすいのが特徴ですが、AIが発達した今の時代、覚える必要すらなくなりました。

データの用意

まずはスプレッドシートにデータを用意します。

今回はデータベースのシートと、送付用のまとめシート「ダッシュボード」を用意しました。

送付するのは「ダッシュボード」シートを送付するようにプログラムを組んでいきます。

では早速プログラムを組んでいきます。

今回はChatGPTさんに書いてもらいます。

GPTを開き、以下のように簡単に指示します。

あなたは優秀なプログラマーです。
毎日0:00にスプレッドシートにある「ダッシュボード」シートをPDF化して、特定のメールアドレスに送付するGASを書いてください。PDFの出力サイズはA4縦の幅フィットにしてください。

すると次のようにコードを書いてくれました。

親切にこの後の手順まで書いてくれていますね。

では次にコードをコピーします。

GPTさんの書き出すコードは機嫌によって書き方が違う場合がありますので、下記と同じコードとは限らないので注意してください。

念のため画像とコードも貼っておきます。

function sendDashboardAsPDF() {
  var sheetName = "ダッシュボード";  // 対象のシート名
  var emailRecipient = "your-email@example.com";  // 送信先のメールアドレス
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName(sheetName);
  
  if (!sheet) {
    Logger.log("指定されたシートが見つかりません: " + sheetName);
    return;
  }

  // スプレッドシートのID
  var spreadsheetId = ss.getId();
  // Google DriveのエクスポートURL
  var exportUrl = "https://docs.google.com/spreadsheets/d/" + spreadsheetId + "/export"
                + "?format=pdf&portrait=false&fitw=true&sheetnames=false&printtitle=false"
                + "&pagenumbers=false&gridlines=false"
                + "&gid=" + sheet.getSheetId();

  // 認証情報を使ってPDFを取得
  var token = ScriptApp.getOAuthToken();
  var response = UrlFetchApp.fetch(exportUrl, {
    headers: {
      'Authorization': 'Bearer ' + token
    }
  });

  var pdfBlob = response.getBlob().setName(sheetName + ".pdf");

  // メール送信
  MailApp.sendEmail({
    to: emailRecipient,
    subject: "ダッシュボードの最新データ (" + new Date().toLocaleDateString() + ")",
    body: "最新のダッシュボードデータを添付します。",
    attachments: [pdfBlob]
  });

  Logger.log("PDFをメール送信しました: " + emailRecipient);
}

// 毎日0:00に実行するトリガーを作成
function createTrigger() {
  ScriptApp.getProjectTriggers().forEach(trigger => {
    if (trigger.getHandlerFunction() === "sendDashboardAsPDF") {
      ScriptApp.deleteTrigger(trigger);  // 既存のトリガーを削除
    }
  });

  ScriptApp.newTrigger("sendDashboardAsPDF")
    .timeBased()
    .atHour(0)
    .everyDays(1)
    .create();

  Logger.log("トリガーを作成しました: 毎日 0:00 に実行");
}

コードをコピーしたらスプレッドシートに戻ります。

ツールにある「拡張機能」から「Apps Script」をクリックで開いてください。

Apps Scriptは別タブで開いてくれます。

これがApps Scriptの操作画面が開いたら、上の赤枠の部分に名前を付けます。

今回は「売上自動送付」にしました。

そしてさきほどコピーしたコードは、下の赤枠部分に貼り付けます。

その際、最初から記載されているコードは消すか上書きしてください。

コードの中に送付先のメアドを記載する部分があると思います(今回はyour-email@example.com)ので、その部分を実際に送付するメアドに書き換えます。

書き換えたら「保存」でコードを保存します。

これで8割方完成です、簡単ですよね?

ただしコード実行の初回のみ「権限の確認」作業がありますので、次に進みます。

「実行」ボタンを押してください。

すると初回だけ権限の確認画面が開きますので「権限を確認」ボタンを押します。

すると利用するアカウントの選択画面になりますので、利用するアカウントをクリックします。

するとちょっと怖い画面になりますが安心してください、大丈夫です。

左下にある「詳細」部分をクリックします。

次にアカウントへのアクセスを求められるので、すべて選択して「続行」ボタンを押します。

これで確認作業は終わりです。

これは初回実行時のみの作業ですので、次回以降出ることはありません。

さきほどまでの作業で「ダッシュボード」シートをPDF化してメールで送るというところまでは完成しています。

次はそれを指定した時刻に自動で送付するための設定を行います。

左のメニューにある時計マーク「トリガー」をクリックしてください。

右下にある「トリガーを追加」ボタンをクリックします。

すると設定画面がモーダルで立ち上がるので、以下のように設定します。

設定できたら「保存」をクリックして保存しましょう。

保存できたら左のメニューから「エディター」をクリックして元の画面に戻ります。

元の画面に戻ったらメールがしっかり送信されるか確認するために「実行」ボタンを押してテストしましょう。

トリガーを設定したことで今回は毎日0:00にメールが送信するように設定されていますが、実行ボタンを押すことで強制的に実行してくれます。

無事メールが届いたらおめでとうございます、完成です。

まとめ

いかがでしたか?とても簡単にできたと思います。

この程度のものなら慣れれば全体で15分かからずに作ることができるようになります。

今回はとても初歩的な内容でしたが、Apps Scriptの便利さはこんなものではありません。

無料のツールを使い倒してもっと効率的に仕事を楽しみましょう!

タイトルとURLをコピーしました