質問編集履歴

5

ソースコード修正

2020/06/30 01:56

投稿

tsuka91027
tsuka91027

スコア6

test CHANGED
File without changes
test CHANGED
@@ -26,7 +26,7 @@
26
26
 
27
27
  //Googleスライドから修了書コピーを取得
28
28
 
29
- var passdocID = '17O2uyEctnsd_OtehBO5PmFYi8pDHZwHf4nU9bOepnxw';
29
+ var passdocID = '****ID';
30
30
 
31
31
  var passdoc = SlidesApp.openById(passdocID);
32
32
 
@@ -90,7 +90,7 @@
90
90
 
91
91
  //PDF修了書作成@修了書格納フォルダ
92
92
 
93
- const folderID = '1BjE7sK9qbcaIFvFoczmOnGPyfYt1QNQM';
93
+ const folderID = '****ID';
94
94
 
95
95
  const folder = DriveApp.getFolderById(folderID); //フォルダIDでフォルダをGET
96
96
 

4

テストの結果(サーチパターンに1スペース加えてもマッチングしなかった)加わるのは不明なキャラ。リプレースされたPresentationには入っていない。

2020/06/30 01:56

投稿

tsuka91027
tsuka91027

スコア6

test CHANGED
File without changes
test CHANGED
@@ -8,7 +8,7 @@
8
8
 
9
9
  シェイプのGet text as Strings での値とSEARCH pattern が合致しない。
10
10
 
11
- スライドのテキストシェイプに Get Text、 Set text で代入したストリングをGet text as Strings で取り出すと、ストリングの最後に1スペースついてしまう。
11
+ スライドのテキストシェイプに Get Text、 Set text で代入したストリングをGet text as Strings で取り出すと、ストリングの最後に不明なキャラ(スペースではない)ついてしまう。リプレースされたPresentationには入っていない。
12
12
 
13
13
 
14
14
 
@@ -26,7 +26,7 @@
26
26
 
27
27
  //Googleスライドから修了書コピーを取得
28
28
 
29
- var passdocID = '*****id';
29
+ var passdocID = '17O2uyEctnsd_OtehBO5PmFYi8pDHZwHf4nU9bOepnxw';
30
30
 
31
31
  var passdoc = SlidesApp.openById(passdocID);
32
32
 
@@ -52,49 +52,51 @@
52
52
 
53
53
  //開始-臨時:強制的にサーチパターンに
54
54
 
55
- passShapes[1].getText().setText( nameSP );
55
+ passShapes[1].getText().setText( nameSP );
56
56
 
57
57
  //終了-臨時:強制的にサーチパターンに
58
58
 
59
59
 
60
60
 
61
- var NowPattern = passShapes[1].getText().asString();
61
+ var NowPattern = passShapes[1].getText().asString();
62
-
63
- if(NowPattern == nameSP){
64
-
65
- passShapes[1].getText().setText( nameRP );
66
-
67
- }
68
62
 
69
63
 
70
64
 
71
- //Slideをセーブ&クローズする
65
+ if(NowPattern == nameSP){
72
66
 
73
- passdoc.saveAndClose();
67
+ passShapes[1].getText().setText( nameRP );
74
68
 
75
- //Slideを再度オープン&GetSlides
69
+ }
76
70
 
77
- passdoc = SlidesApp.openById(passdocID);
71
+
78
72
 
79
- passSlide = passdoc.getSlides()[0];
73
+ //Slideをセーブ&クローズする
80
74
 
81
- passShapes = passSlide.getShapes();
75
+ passdoc.saveAndClose();
82
76
 
83
- //レースしたドキュメトをPDFにする、ファイル名を付ける
77
+ //Slideを再度オープン&GetSlides
84
78
 
79
+ passdoc = SlidesApp.openById(passdocID);
80
+
81
+ passSlide = passdoc.getSlides()[0];
82
+
83
+ passShapes = passSlide.getShapes();
84
+
85
+ //リプレースしたドキュメントをPDFにする、ファイル名を付ける
86
+
85
- var pdf = DriveApp.getFileById( passdocID ).getAs( MimeType.PDF).setName('山田 太郎様修了書.pdf'); //OK
87
+ var pdf = DriveApp.getFileById( passdocID ).getAs( MimeType.PDF).setName('山田 太郎様修了書.pdf'); //OK
86
88
 
87
89
 
88
90
 
89
- //PDF修了書作成@修了書格納フォルダ
91
+ //PDF修了書作成@修了書格納フォルダ
90
92
 
91
- const folderID = '****id';
93
+ const folderID = '1BjE7sK9qbcaIFvFoczmOnGPyfYt1QNQM';
92
94
 
93
- const folder = DriveApp.getFolderById(folderID); //フォルダIDでフォルダをGET
95
+ const folder = DriveApp.getFolderById(folderID); //フォルダIDでフォルダをGET
94
96
 
95
- folder.createFile(pdf); //ファイルを作る
97
+ folder.createFile(pdf); //ファイルを作る
96
98
 
97
- }
99
+ }
98
100
 
99
101
  ```
100
102
 
@@ -106,7 +108,7 @@
106
108
 
107
109
  デバッグで変数の値を確認。デバッガーのスクリーンコピーを載せます(説明も書いておきました)。
108
110
 
109
- ![イメージ説明](b84d6f889efe99fea281d6528b3f9301.png)
111
+ ![イメージ説明](a549a7ecff1ae7ffa3e8d3fab35bc806.png)
110
112
 
111
113
 
112
114
 
@@ -114,6 +116,6 @@
114
116
 
115
117
  ### 補足情報(FW/ツールのバージョンなど)
116
118
 
117
- 1スペース入るものなのでしょうか?
119
+ 1キャラ入るものなのでしょうか?キャラの正体が分からず困っています。
118
120
 
119
121
  よろしく回答お願いいたします。

3

2020/06/30 01:43

投稿

tsuka91027
tsuka91027

スコア6

test CHANGED
File without changes
test CHANGED
@@ -26,7 +26,7 @@
26
26
 
27
27
  //Googleスライドから修了書コピーを取得
28
28
 
29
- var passdocID = '17O2uyEctnsd_OtehBO5PmFYi8pDHZwHf4nU9bOepnxw';
29
+ var passdocID = '*****id';
30
30
 
31
31
  var passdoc = SlidesApp.openById(passdocID);
32
32
 
@@ -88,7 +88,7 @@
88
88
 
89
89
  //PDF修了書作成@修了書格納フォルダ
90
90
 
91
- const folderID = '1BjE7sK9qbcaIFvFoczmOnGPyfYt1QNQM';
91
+ const folderID = '****id';
92
92
 
93
93
  const folder = DriveApp.getFolderById(folderID); //フォルダIDでフォルダをGET
94
94
 

2

誤記訂正

2020/06/29 09:19

投稿

tsuka91027
tsuka91027

スコア6

test CHANGED
File without changes
test CHANGED
@@ -104,7 +104,7 @@
104
104
 
105
105
 
106
106
 
107
- デバッグで変数の値を確認。デバッガーのスクリーンコピーを載せます(説明ておきました)。
107
+ デバッグで変数の値を確認。デバッガーのスクリーンコピーを載せます(説明も書いておきました)。
108
108
 
109
109
  ![イメージ説明](b84d6f889efe99fea281d6528b3f9301.png)
110
110
 

1

前の質問は、余計な情報がたくさんあり大変失礼しました。 また追加のテストでわかったことがあるので極力質問をシンプルにしたつもりです、どうぞよろしくお願いします。

2020/06/29 08:43

投稿

tsuka91027
tsuka91027

スコア6

test CHANGED
File without changes
test CHANGED
@@ -6,7 +6,9 @@
6
6
 
7
7
  ここに質問の内容を詳しく書いてください。
8
8
 
9
- シェイプのGet text as Strings での値とSEARCH pattern が合致しない、ログで見る限り完全一致 If 文の条件が成立しないので text replace ができない。
9
+ シェイプのGet text as Strings での値とSEARCH pattern が合致しない。
10
+
11
+ スライドのテキストシェイプに Get Text、 Set text で代入したストリングをGet text as Strings で取り出すと、ストリングの最後に1スペースついてしまう。
10
12
 
11
13
 
12
14
 
@@ -16,11 +18,15 @@
16
18
 
17
19
  ```GAS
18
20
 
21
+ コード
22
+
23
+ ```
24
+
19
25
  function matchNGFunction() {
20
26
 
21
27
  //Googleスライドから修了書コピーを取得
22
28
 
23
- var passdocID = '****GoogleスライドのID******';
29
+ var passdocID = '17O2uyEctnsd_OtehBO5PmFYi8pDHZwHf4nU9bOepnxw';
24
30
 
25
31
  var passdoc = SlidesApp.openById(passdocID);
26
32
 
@@ -30,185 +36,43 @@
30
36
 
31
37
 
32
38
 
33
- // Googleスプレッドシトからデタ取得
39
+ //受講票のサチパタンの初期値定義
34
40
 
35
- var spreadsheet = SpreadsheetApp.getActive();
36
-
37
- var sheet = spreadsheet.getActiveSheet();
38
-
39
- var range = sheet.getDataRange();
41
+ var nameSP = '氏名 :{氏名}';
40
-
41
- var rangeValues = range.getValues();
42
42
 
43
43
 
44
44
 
45
- //プレッドシトの各デ名前を付け、列の位置を0オリジンで指
45
+ //受講票のリプレースパタの定
46
46
 
47
- var snamep = 1;//姓
47
+ var nameRP = '氏名 :山田 太郎様';
48
48
 
49
- var fnamep = 2;//名
49
+ //データ作成処理
50
50
 
51
- var emailp = 3;//メールアドレス
51
+
52
-
53
- var companyp = 4;//団体名
54
-
55
- var addrsp = 5;//住所
56
-
57
- var mnbrshpp = 6;//会員種別
58
-
59
- var telp = 7;//電話番号
60
-
61
- var idp = 8;//ID
62
-
63
- var pwp = 9;//パスワード
64
-
65
- var bnktrp = 10;//振込済み
66
-
67
- var ecmfrmp = 11;//登録確認済み
68
-
69
- var sndmp = 12; //送信済みマーク
70
-
71
- var stdycmpp = 13; //履修済みマーク列位置、本メールを送るべき行のこの欄は空白、送信後タイムスタンプが付けられる
72
-
73
- var rmndstdycmpsndp = 14; //履修督促送信済み
74
-
75
- var passSendedp = 15; //修了書作成済み
76
-
77
-
78
-
79
- //受講票のサーチパターンの初期値定義
80
-
81
- var iNameSP = '氏名 :{氏名}';
82
-
83
- var iCompanySP = '法人名:{団体名}';
84
-
85
- var iTodaySP = '発行日:{本日日付}';
86
-
87
- //受講票のサーチパターンに初期値を入力
88
-
89
- var nameSP = iNameSP;
90
-
91
- var companySP = iCompanySP;
92
-
93
- var todaySP = iTodaySP;
94
-
95
-
96
-
97
- //メイン処理
98
-
99
- //本日日付の作成
100
-
101
- var today = Utilities.formatDate(new Date(), 'Asia/Tokyo', 'yyyy年MM月dd日');
102
-
103
-
104
-
105
- for(var i = 1; i < rangeValues.length ; i++) {
106
-
107
-  //各行のデータをゲット
108
-
109
- var sname = rangeValues[i][snamep]; //姓
110
-
111
- var fname = rangeValues[i][fnamep]; //名
112
-
113
- var email = rangeValues[i][emailp]; //メールアドレス
114
-
115
- var company = rangeValues[i][companyp]; //団体名
116
-
117
- var addrs = rangeValues[i][addrsp]; //住所
118
-
119
- var mnbrshp = rangeValues[i][mnbrshpp]; //会員種別
120
-
121
- var tel = rangeValues[i][telp]; //電話番号
122
-
123
- var id = rangeValues[i][idp]; //ID
124
-
125
- var pw = rangeValues[i][pwp]; //パスワード
126
-
127
- var bnktr = rangeValues[i][bnktrp]; //振込済み
128
-
129
- var ecmfrm = rangeValues[i][ecmfrmp]; //登録確認済み
130
-
131
- var sndm = rangeValues[i][sndmp];//送信済みマーク
132
-
133
- var stdycmp = rangeValues[i][stdycmpp];//履修済み
134
-
135
- var rmndstdycmpsnd = rangeValues[i][rmndstdycmpsndp]; //履修督促送信済み
136
-
137
- var passSended = rangeValues[i][passSendedp]; //修了書作成済み
138
-
139
-
140
-
141
- //受講票のリプレースパターンの定義
142
-
143
- var nameRP = '氏名 :'+sname+' '+fname+'様';
144
-
145
- var companyRP = '法人名:'+company;
146
-
147
- var todayRP = '発行日:'+today;
148
-
149
-
150
-
151
- //データ作成処理
152
-
153
- if(passSended == ''&& stdycmp) {
154
-
155
- //Presentationのテキストを書式なしで置換
156
-
157
- console.log('SPの値'+nameSP+' '+companySP+' '+todaySP);
158
-
159
- var shapesLength = passShapes.length;
160
-
161
-
162
52
 
163
53
  //開始-臨時:強制的にサーチパターンに
164
54
 
165
55
  passShapes[1].getText().setText( nameSP );
166
56
 
167
- passShapes[0].getText().setText( companySP );
168
-
169
- passShapes[2].getText().setText( todaySP );
170
-
171
57
  //終了-臨時:強制的にサーチパターンに
172
58
 
173
59
 
174
60
 
175
- for (var sn = 0;sn < shapesLength; sn++){ //shapesの数の分だけサーチパターンを探す 氏名
61
+ var NowPattern = passShapes[1].getText().asString();
176
62
 
177
- var ReplacePattern = passShapes[sn].getText().asString();
63
+ if(NowPattern == nameSP){
178
64
 
179
- console.log('shape'+sn+'の値 '+ReplacePattern);
65
+ passShapes[1].getText().setText( nameRP );
180
66
 
181
- if(ReplacePattern == nameSP){
67
+ }
182
68
 
183
- passShapes[sn].getText().setText( nameRP );
69
+
184
70
 
185
- nameSP = nameRP; //サーチパターンをリプレースパターンに置き換える
186
-
187
- }
188
-
189
- if(ReplacePattern == companySP){ //shapesの数の分だけサーチパターンを探す 法人名
190
-
191
- passShapes[sn].getText().setText( companyRP );
192
-
193
- companySP = companyRP; //サーチパターンをリプレースパターンに置き換える
194
-
195
- }
196
-
197
- if(ReplacePattern == todaySP){ //shapesの数の分だけサーチパターンを探す 発行日
198
-
199
- passShapes[sn].getText().setText( todayRP );
200
-
201
- todaySP = todayRP; //サーチパターンをリプレースパターンに置き換える
202
-
203
- }
204
-
205
- }
206
-
207
- //Documentをセーブ&クローズする passdoc.saveAndClose();
71
+ //Slideをセーブ&クローズする
208
72
 
209
73
  passdoc.saveAndClose();
210
74
 
211
- //Documentを再度オープン&GetSlides
75
+ //Slideを再度オープン&GetSlides
212
76
 
213
77
  passdoc = SlidesApp.openById(passdocID);
214
78
 
@@ -218,7 +82,7 @@
218
82
 
219
83
  //リプレースしたドキュメントをPDFにする、ファイル名を付ける
220
84
 
221
- var pdf = DriveApp.getFileById( passdocID ).getAs( MimeType.PDF).setName(sname+' '+fname+'様修了書.pdf'); //OK
85
+ var pdf = DriveApp.getFileById( passdocID ).getAs( MimeType.PDF).setName('山田 太郎様修了書.pdf'); //OK
222
86
 
223
87
 
224
88
 
@@ -230,47 +94,7 @@
230
94
 
231
95
  folder.createFile(pdf); //ファイルを作る
232
96
 
233
-
234
-
235
- //作成済みマーク(タイムスタンプ)をつける 「送信済み」列位置は1オリジン
236
-
237
- // 現在時刻をゲット
238
-
239
- var currentTime = Utilities.formatDate(new Date(), 'Asia/Tokyo', 'yyyy/MM/dd HH:mm:ss:sss');
240
-
241
- var j = i+1; //1オリジンの行番号へ
242
-
243
- sheet.getRange(j,passSendedp+1).setValue(currentTime); }
244
-
245
97
  }
246
-
247
-
248
-
249
- //ドキュメントをオリジナルに戻す
250
-
251
- ReplacePattern = passShapes[sn].getText().asString();
252
-
253
- for (var sn = 0;sn < passShapes.length; sn++){ //shapesの数の分だけサーチパターンを探す 氏名
254
-
255
- if(ReplacePattern == nameSP){
256
-
257
- passShapes[sn].getText().setText( iNameSP );
258
-
259
- }
260
-
261
- if(ReplacePattern == companySP){ //shapesの数の分だけサーチパターンを探す 法人名
262
-
263
- passShapes[sn].getText().setText( iCompanySP );
264
-
265
- }
266
-
267
- if(ReplacePattern == todaySP){ //shapesの数の分だけサーチパターンを探す 発行日
268
-
269
- passShapes[sn].getText().setText( iTodaySP );
270
-
271
- }
272
-
273
- }
274
98
 
275
99
  ```
276
100
 
@@ -280,24 +104,16 @@
280
104
 
281
105
 
282
106
 
283
- パターンを完全に一致さるために以下を入れみたが結果は同じでした
107
+ デバッグで変数の値を確認。デバッガのスクリーコピーます(説明会おきました
284
108
 
285
- //開始-臨時:強制的にサチパターンに
109
+ ![イメジ説明](b84d6f889efe99fea281d6528b3f9301.png)
286
110
 
287
- passShapes[1].getText().setText( nameSP );
288
111
 
289
- passShapes[0].getText().setText( companySP );
290
-
291
- passShapes[2].getText().setText( todaySP );
292
-
293
- //終了-臨時:強制的にサーチパターンに
294
112
 
295
113
 
296
114
 
297
115
  ### 補足情報(FW/ツールのバージョンなど)
298
116
 
299
-
300
-
301
- 多分私単純ミスだと思いますが、どしても見つりません。
117
+ 1スペース入るものなのでしょうか
302
118
 
303
119
  よろしく回答お願いいたします。