質問編集履歴
2
ご回答者様へ
test
CHANGED
File without changes
|
test
CHANGED
@@ -108,3 +108,6 @@
|
|
108
108
|
}
|
109
109
|
|
110
110
|
```
|
111
|
+
|
112
|
+
エラー文↓
|
113
|
+

|
1
ご回答者様へ
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
|
+
```
|