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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

PDF

PDF(Portable Document Format)とはISOによって国際標準として制定されている電子ドキュメント用の拡張子です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Google

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

Q&A

解決済

1回答

4562閲覧

spreadsheetをPDF化した時、セルのメモ欄を表示させたくない

Momm

総合スコア1

Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

PDF

PDF(Portable Document Format)とはISOによって国際標準として制定されている電子ドキュメント用の拡張子です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Google

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

0グッド

0クリップ

投稿2020/11/08 10:39

編集2020/11/08 12:24

前提・実現したいこと

きちんとGAS(プログラミング全般含め)を触ったのは今日が初めてのレベルです。
今まではコピペして読解、少し書き換えるくらいしか経験がありません。
いくら調べても分からず、ご教示いただけますと幸いです。

スプレッドシートからPDFに出力し、ドライブに格納したい。

発生している問題・エラーメッセージ

スプレッドシートをPDF化するGASを作成し、ドライブに出力するところまではできました。
ただ、対象のシートに入っているセルのメモを表示させたくないのですが、
PDF上では[1][2]・・・と但し書きが入り、下部に[1] ~~~~ [2]~~~~ ・・・と入ってしまいます。
この表示を消したいです。(スプレッドシートにはそのまま表示させておきたいです。)
エラー等は特にでません。

該当のソースコード

GAS

1function getFolderId() { 2 3var ui = SpreadsheetApp.getUi(); 4var response = ui.prompt( 5 'フォルダのURLを入力してください。', 6 '(例)https://drive.google.com/drive/folders/************', 7 ui.ButtonSet.OK 8); 9 10var inputName = response.getResponseText() 11.replace('https://drive.google.com/drive/folders/','') 12.replace('https://drive.google.com/drive/u/0/folders/','') 13.replace('https://drive.google.com/drive/u/1/folders/',''); 14 15console.log(inputName); 16 17switch (response.getSelectedButton()) { 18 case ui.Button.OK: 19 console.log('%s と入力され、OKが押されました。',inputName); 20 21 break; 22 23 case ui.Button.CLOSE: 24 console.log('閉じるボタンが押されました。'); 25 26}//switch 27 28return inputName; 29} 30 31 32 33 34function exportAsPDF() { 35 36 var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); 37 var ssId = spreadsheet.getId(); 38 var sheetId = spreadsheet.getSheetByName('シート名').getSheetId(); 39 40 var date = new Date(); 41 var today = Utilities.formatDate(date, 'JST', 'yyMMdd'); 42 43 var fileName = today + ' 出力名'; 44 var folderId = getFolderId(); 45 var folder = DriveApp.getFolderById(folderId); 46 // スプレッドシートをPDFにエクスポートするためのURL。このURLに色々なオプションを付けてPDFを作成 47 var url = "https://docs.google.com/spreadsheets/d/SSID/export?".replace("SSID", ssId); 48 49 // PDF作成のオプションを指定 50 var opts = { 51 exportFormat: "pdf", // ファイル形式の指定 pdf / csv / xls / xlsx 52 format: "pdf", // ファイル形式の指定 pdf / csv / xls / xlsx 53 size: "A4", // 用紙サイズの指定 legal / letter / A4 54 portrait: "true", // true → 縦向き、false → 横向き 55 fitw: "true", // 幅を用紙に合わせるか 56 sheetnames: "false", // シート名をPDF上部に表示するか 57 printtitle: "false", // スプレッドシート名をPDF上部に表示するか 58 pagenumbers: "false", // ページ番号の有無 59 gridlines: "false", // グリッドラインの表示有無 60 fzr: "false", // 固定行の表示有無 61 range: "A1%3AN54", // 対象範囲 62 gid: sheetId // シートIDを指定 sheetidは引数で取得 63 }; 64 65 var url_ext = []; 66 67 // 上記のoptsのオプション名と値を「=」で繋げて配列url_extに格納 68 for( optName in opts ){ 69 url_ext.push( optName + "=" + opts[optName] ); 70 } 71 72 // url_extの各要素を「&」で繋げる 73 var options = url_ext.join("&"); 74 75 // optionsは以下のように作成しても同じです。 76 // var ptions = 'exportFormat=pdf&format=pdf' 77 // + '&size=A4' 78 // + '&portrait=true' 79 // + '&sheetnames=false&printtitle=false' 80 // + '&pagenumbers=false&gridlines=false' 81 // + '&fzr=false' 82 // + '&gid=' + sheetid; 83 84 // API使用のためのOAuth認証 85 var token = ScriptApp.getOAuthToken(); 86 87 // PDF作成 88 var response = UrlFetchApp.fetch(url + options, { 89 headers: { 90 'Authorization': 'Bearer ' + token 91 } 92 }); 93 94 // 95 var blob = response.getBlob().setName(fileName + '.pdf'); 96 97 //} 98 99 // PDFを指定したフォルダに保存 100 folder.createFile(blob); 101 102}

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

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

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

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

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

guest

回答1

0

ベストアンサー

質問とはやり方が違いますが、スプレッドシートのエクスポート画面をエミュレートする方法がこちらで紹介されていました。ロシア語のサイトですが、Google翻訳等使えばなんとか読めます。

以下は最小限に抜粋してオプションに日本語のコメントを付けたものです。
エクスポート画面から設定できるオプションはほぼ網羅しているはずです。

JavaScript

1function encodeDate(yy, mm, dd, hh, ii, ss) { 2 var days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; 3 if (yy % 4 == 0 && (yy % 100 != 0 || yy % 400 == 0)) days[1] = 29; 4 for (var i = 0; i < mm; i++) dd += days[i]; 5 yy--; 6 return ( 7 ((((yy * 365 + 8 (yy - (yy % 4)) / 4 - 9 (yy - (yy % 100)) / 100 + 10 (yy - (yy % 400)) / 400 + 11 dd - 12 693594) * 13 24 + 14 hh) * 15 60 + 16 ii) * 17 60 + 18 ss) / 19 86400.0 20 ); 21} 22 23function exportPDF() { 24 const file = SpreadsheetApp.getActiveSpreadsheet(); 25 const sheet = file.getSheets()[0]; 26 27 const lastRow = sheet.getLastRow(); 28 const lastCol = sheet.getLastColumn(); 29 30 const exportSource = [ 31 [ 32 sheet.getSheetId().toString(), //シートID 33 0, // 範囲:開始行(0~) 34 lastRow, // 範囲:終了行 35 0, // 範囲:開始列(0~) 36 lastCol, // 範囲:終了列 37 ], 38 ]; 39 const exportOptions = [ 40 0, // 印刷形式:メモを表示 0:なし 1:あり 41 null, // (不明) 42 1, // 印刷形式:グリッド線を表示 0:あり 1:なし 43 0, // ヘッダーとフッター:ページ番号 0:なし 1:あり 44 0, // ヘッダーとフッター:ワークブックのタイトル 0:なし 1:あり 45 0, // ヘッダーとフッター:シート名 0:なし 1:あり 46 0, // ヘッダーとフッター:現在の日付 0:なし 1:あり 47 0, // ヘッダーとフッター:現在の時刻 0:なし 1:あり 48 1, // 行と列の見出し:固定行を繰り返す 0:なし 1:あり 49 1, // 行と列の見出し:固定列を繰り返す 0:なし 1:あり 50 2, // ページの印刷順序 1:上から下 2:左から右 51 1, // (不明) 52 null, // (不明) 53 null, // (不明) 54 1, // 配置:水平 1:左 2:中央 3:右 55 1, // 配置:垂直 1:上 2:中央 3:下 56 ]; 57 const exportFormat = [ 58 "A4", // 用紙サイズ 59 0, // ページの向き 0:横向き 1:縦向き 60 2, // スケール 0:標準(100%) 1:幅に合わせる 2:高さに合わせる 3:ページに合わせる 4:カスタム 61 1, // スケールで4(カスタム)選択時のパーセント(0~1の範囲) 62 [ 63 0.75, // 上部オフセット 0.75インチ 64 0.75, // 下部オフセット 0.75インチ 65 0.7, // 左オフセット 0.7インチ 66 0.7, // 右オフセット 0.7インチ 67 ], 68 ]; 69 70 var today = new Date(); 71 var d = encodeDate( 72 today.getFullYear(), 73 today.getMonth(), 74 today.getDate(), 75 today.getHours(), 76 today.getMinutes(), 77 today.getSeconds() 78 ); 79 var pc = [ 80 null, 81 null, 82 null, 83 null, 84 null, 85 null, 86 null, 87 null, 88 null, 89 0, 90 exportSource, 91 10000000, 92 null, 93 null, 94 null, 95 null, 96 null, 97 null, 98 null, 99 null, 100 null, 101 null, 102 null, 103 null, 104 null, 105 null, 106 d, 107 null, 108 null, 109 exportOptions, 110 exportFormat, 111 null, 112 0, 113 null, 114 0, 115 ]; 116 117 const ssID = file.getId(); 118 119 const options = { 120 method: "post", 121 payload: "a=true&pc=" + JSON.stringify(pc) + "&gf=[]", 122 headers: { Authorization: "Bearer " + ScriptApp.getOAuthToken() }, 123 muteHttpExceptions: true, 124 }; 125 126 const res = UrlFetchApp.fetch( 127 "https://docs.google.com/spreadsheets/d/" + ssID + "/pdf?id=" + ssID, 128 options 129 ); 130 131 const resCode = res.getResponseCode(); 132 if (resCode !== 200) { 133 throw new Error(`(${resCode}) ${res.getContentText()}`); 134 } 135 136 const blob = res.getBlob(); 137 const filename = file.getName() + " " + sheet.getName() + ".pdf" 138 DriveApp.createFile(blob).setName(filename); 139} 140

投稿2020/11/09 03:57

編集2020/11/09 05:36
draq

総合スコア2573

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

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

Momm

2020/11/10 04:12

迅速なご回答ありがとうございます。 頂いた内容と、ロシア語のサイトをなんとか解読し実現したいことをできました。(コードの意味は理解できていない範囲ばかりですが…) 自分では絶対にたどり着けないところでした。大変助かりました。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問