質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

Q&A

0回答

875閲覧

【GAS】 シートのPDF化し、ドライブに保存し、メールにPDFを添付し送信を行いたいです。保存まではできましたが、PDF添付してのメール送信がうまくいきません。

退会済みユーザー

退会済みユーザー

総合スコア0

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

0グッド

0クリップ

投稿2021/02/10 12:04

編集2021/02/11 23:50

###前提・実現したいこと

スプレッドシートをPDF化し、PDF上の特定のセルに記載のアドレスにPDFを送りたいです。また同時にPDFを指定のファイルに保存したいです。

PDF化はすることができきたのですが、PDF付きのメールが送られません。(エラーコードは出ていません。)
どこのコードが間違っているかわからないためお力添え頂けますと幸いです。

該当のソースコード

function myFunction(){

var folderid = "フォルダID";

// 現在開いているスプレッドシートを取得
var ss = SpreadsheetApp.getActiveSpreadsheet();

// 現在開いているスプレッドシートのIDを取得
var ssid = ss.getId();

// 現在開いているスプレッドシートのシートIDを取得
var sheetid = ss.getActiveSheet().getSheetId();

  // ファイル名に使用する名前を取得
var customer_name = ss.getRange("C29").getValue() + " " + ss.getRange("D8").getValue();
// スプレッドシートのC29に顧客の名前、D8に作成者の名前が入っているため、それをファイル名用に取得

// PDF作成関数
createPDF( folderid, ssid, sheetid, customer_name );

}

// PDF作成関数 引数は(folderid:保存先フォルダID, ssid:PDF化するスプレッドシートID, sheetid:PDF化するシートID, filename:PDFの名前)
function createPDF(folderid, ssid, sheetid, filename){

// PDFファイルの保存先となるフォルダをフォルダIDで指定
var folder = DriveApp.getFolderById(folderid);

// スプレッドシートをPDFにエクスポートするためのURL。このURLに色々なオプションを付けてPDFを作成
var url = "https://docs.google.com/spreadsheets/d/SSID/export?".replace("SSID", ssid);

// PDF作成のオプションを指定
var opts = {
exportFormat: "pdf", // ファイル形式の指定 pdf / csv / xls / xlsx
format: "pdf", // ファイル形式の指定 pdf / csv / xls / xlsx
size: "A4", // 用紙サイズの指定 legal / letter / A4
portrait: "true", // true → 縦向き、false → 横向き
fitw: "true", // 幅を用紙に合わせるか
range: "A1%3AM62", //A1:M62のレンジ
sheetnames: "false", // シート名をPDF上部に表示するか
printtitle: "false", // スプレッドシート名をPDF上部に表示するか
pagenumbers: "false", // ページ番号の有無
gridlines: "false", // グリッドラインの表示有無
fzr: "false", // 固定行の表示有無
gid: sheetid // シートIDを指定 sheetidは引数で取得
};

var url_ext = [];

// 上記のoptsのオプション名と値を「=」で繋げて配列url_extに格納
for( optName in opts ){
url_ext.push( optName + "=" + opts[optName] );
}

// url_extの各要素を「&」で繋げる
var options = url_ext.join("&");

// API使用のためのOAuth認証
var token = ScriptApp.getOAuthToken();

// PDF作成 var response = UrlFetchApp.fetch(url + options, { headers: { 'Authorization': 'Bearer ' + token } }); // var blob = response.getBlob().setName(filename + '.pdf');

//}

// PDFを指定したフォルダに保存
folder.createFile(blob);

function sendMail(){
var toAdr = "=D13"; // D13に送信したいアドレスがあります
var ccAdr = "CC アドレス";
var fromAdr = "送信元アドレス";
var subject = "メールのタイトル";
var body ="メールの本文";
var option = {attachments: pdf};

GmailApp.sendEmail(toAdr,
ccAdr,
fromAdr,
subject,
body,
option)
}

}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

anzuchan

2021/02/13 19:31

私もgasは勉強中なので、自信はないのですが、 var option = {attachments: pdf}; のpdfの箇所に、添付するpdfのファイル名(複数なら変数)が必要かと思いました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問