質問編集履歴

2

ご回答者様へ

2022/06/02 16:42

投稿

shiyuh
shiyuh

スコア21

test CHANGED
File without changes
test CHANGED
@@ -108,3 +108,6 @@
108
108
  }
109
109
 
110
110
  ```
111
+
112
+ エラー文↓
113
+ ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2022-06-03/b1e68bf1-a203-4c47-b9f1-d464fd3d4e29.png)

1

ご回答者様へ

2022/05/31 14:15

投稿

shiyuh
shiyuh

スコア21

test CHANGED
File without changes
test CHANGED
@@ -8,3 +8,103 @@
8
8
  やりたいのは、全顧客の必要情報をまとめたスプレッドシートのデータを使って個人書類を作成し、簡単に全顧客分のPDFを作成することです。
9
9
 
10
10
  良い提案があればご教示ください。
11
+
12
+ コード1
13
+ ```function savePdf(){
14
+ //PDFの保存先
15
+ //★★★フォルダーIDを入力してください★★★
16
+ let folderId = "**************";
17
+
18
+ //アクティブなスプレッドシートを取得する
19
+ let ss = SpreadsheetApp.getActiveSpreadsheet();
20
+
21
+ //スプレッドシートIDを取得する
22
+ let ssId = ss.getId();
23
+
24
+ //シートIDを取得する
25
+ let shId = ss.getActiveSheet().getSheetId();
26
+
27
+ //D4セルを取得する
28
+ let fileNum = ss.getActiveSheet().getRange("D4").getValue();
29
+
30
+ //★★★PDFのファイル名を入力してください★★★
31
+ //※ポイント: ファイル名が重複しないようにしましょう
32
+ let fileName = fileNum;
33
+
34
+ //関数createPdfを実行し、PDFを作成して保存する
35
+ createPdf(folderId, ssId, shId, fileName);
36
+ }
37
+
38
+ //PDFを作成し指定したフォルダーに保存する関数
39
+ //以下4つの引数を指定する必要がある
40
+ //1: フォルダーID (folderId)
41
+ //2: スプレッドシートID (ssId)
42
+ //3: シートID (shId)
43
+ //4: ファイル名 (fileName)
44
+ function createPdf(folderId, ssId, shId, fileName){
45
+ //PDFを作成するためのベースとなるURL
46
+ let baseUrl = "https://docs.google.com/spreadsheets/d/"
47
+ + ssId
48
+ + "/export?gid="
49
+ + shId;
50
+
51
+ //★★★自由にカスタマイズしてください★★★
52
+ //PDFのオプションを指定
53
+ let pdfOptions = "&exportFormat=pdf&format=pdf"
54
+ + "&size=A4" //用紙サイズ (A4)
55
+ + "&portrait=false" //用紙の向き true: 縦向き / false: 横向き
56
+ + "&fitw=true" //ページ幅を用紙にフィットさせるか true: フィットさせる / false: 原寸大
57
+ + "&top_margin=0.50" //上の余白
58
+ + "&right_margin=0.50" //右の余白
59
+ + "&bottom_margin=0.50" //下の余白
60
+ + "&left_margin=0.50" //左の余白
61
+ + "&horizontal_alignment=CENTER" //水平方向の位置
62
+ + "&vertical_alignment=TOP" //垂直方向の位置
63
+ + "&printtitle=false" //スプレッドシート名の表示有無
64
+ + "&sheetnames=false" //シート名の表示有無
65
+ + "&gridlines=false" //グリッドラインの表示有無
66
+ + "&fzr=false" //固定行の表示有無
67
+ + "&fzc=false" //固定列の表示有無;
68
+
69
+ //PDFを作成するためのURL
70
+ let url = baseUrl + pdfOptions;
71
+
72
+ //アクセストークンを取得する
73
+ let token = ScriptApp.getOAuthToken();
74
+
75
+ //headersにアクセストークンを格納する
76
+ let options = {
77
+ headers: {
78
+ 'Authorization': 'Bearer ' + token
79
+ }
80
+ };
81
+
82
+ //PDFを作成する
83
+ let blob = UrlFetchApp.fetch(url, options).getBlob().setName(fileName + '.pdf');
84
+
85
+ //PDFの保存先フォルダー
86
+ //フォルダーIDは引数のfolderIdを使用します
87
+ let folder = DriveApp.getFolderById(folderId);
88
+
89
+ //PDFを指定したフォルダに保存する
90
+ folder.createFile(blob);
91
+ }
92
+
93
+ ```
94
+ コード2
95
+ ```function onOpen() {
96
+ let ui = SpreadsheetApp.getUi()
97
+
98
+ //メニュー名を決定
99
+ //★★★メニュー名は好きなものに置き換えてください★★★
100
+ let menu = ui.createMenu("GAS実行");
101
+
102
+ //メニューに実行ボタン名と関数を割り当て
103
+ //★★★実行ボタン名は好きなものに置き換えてください★★★
104
+ menu.addItem("PDF作成","savePdf");
105
+
106
+ //スプレッドシートに反映
107
+ menu.addToUi();
108
+ }
109
+
110
+ ```