質問編集履歴

3

ソース表示方法変更

2017/08/09 10:21

投稿

kikukiku
kikukiku

スコア514

test CHANGED
File without changes
test CHANGED
@@ -68,6 +68,8 @@
68
68
 
69
69
  ###ソース
70
70
 
71
+ ```ここに言語を入力
72
+
71
73
  function submitForm(e){
72
74
 
73
75
  //ここでフォームの検索条件を取得するが割愛する
@@ -221,3 +223,5 @@
221
223
  GmailApp.sendEmail(mailto, subject, body, {attachments:attachmentFiles});
222
224
 
223
225
  }
226
+
227
+ ```

2

ソースの文字化け修正

2017/08/09 10:21

投稿

kikukiku
kikukiku

スコア514

test CHANGED
File without changes
test CHANGED
@@ -82,8 +82,6 @@
82
82
 
83
83
  function loadEvent() {
84
84
 
85
- // シートの再作成
86
-
87
85
  sheetcreate();
88
86
 
89
87
  var cal = CalendarApp.getCalendarById("カレンダーID");
@@ -116,12 +114,6 @@
116
114
 
117
115
 
118
116
 
119
- /**
120
-
121
- * シートの再作成
122
-
123
- */
124
-
125
117
  function sheetcreate(){
126
118
 
127
119
  var mspid = "スプレッドシートのID";
@@ -134,25 +126,15 @@
134
126
 
135
127
  sheet = ash.insertSheet("test1");
136
128
 
137
- Logger.log("シート新規作成");
138
-
139
129
  }else{
140
130
 
141
131
  sheet.clear();
142
132
 
143
- Logger.log("シートクリア");
144
-
145
- }
133
+ }
146
-
134
+
147
- }
135
+ }
148
-
149
-
150
-
151
- /**
136
+
152
-
153
- * Sheetに一行追加
137
+
154
-
155
- */
156
138
 
157
139
  function paste(array){
158
140
 
@@ -164,16 +146,10 @@
164
146
 
165
147
 
166
148
 
167
- //最終行の位置を取得
168
-
169
149
  var lastColumn = array[0].length;
170
150
 
171
- //カラムの数を取得する
172
-
173
151
  var lastRow = array.length;
174
152
 
175
- //行の数を取得する
176
-
177
153
  sheet.getRange(2,1,lastRow,lastColumn).setValues(array);
178
154
 
179
155
  }
@@ -182,28 +158,18 @@
182
158
 
183
159
  function sendMail_Excel() {
184
160
 
185
- // ファイル関係
186
-
187
161
  var targetFileId = "スプレッドシートのID";
188
162
 
189
163
  var objFile;
190
164
 
191
165
  var fileName;
192
166
 
193
-
194
-
195
- // メール関係
196
-
197
167
  var mailto = "メール送信先";
198
168
 
199
169
  var subject = "スプレッドシート添付テスト";
200
170
 
201
171
  var body = "";
202
172
 
203
-
204
-
205
- // その他
206
-
207
173
  var fetchUrl;
208
174
 
209
175
  var fetchOpt = {
@@ -226,24 +192,14 @@
226
192
 
227
193
  {
228
194
 
229
- // ファイルIDからファイルの名前を取得する
230
-
231
195
  objFile = DriveApp.getFileById(targetFileId);
232
196
 
233
197
  fileName = objFile.getName();
234
198
 
235
-
236
-
237
- // 添付するExcelファイルの名前
238
-
239
199
  xlsxName = fileName + ".xlsx";
240
200
 
241
-
242
-
243
201
  body = xlsxName + "を添付します";
244
202
 
245
-
246
-
247
203
  fetchUrl = "https://docs.google.com/feeds/download/spreadsheets/Export?key=" + targetFileId + "&exportFormat=xlsx";
248
204
 
249
205
  attachmentFiles.push(UrlFetchApp.fetch(fetchUrl, fetchOpt).getBlob().setName(xlsxName));

1

ソースを追加

2017/08/08 01:17

投稿

kikukiku
kikukiku

スコア514

test CHANGED
File without changes
test CHANGED
@@ -63,3 +63,205 @@
63
63
  どのような全体設計をすれば実現したいことが可能になりますでしょうか?
64
64
 
65
65
  また、即時スプレッドシートへの反映の仕方などありませんでしょうか?
66
+
67
+
68
+
69
+ ###ソース
70
+
71
+ function submitForm(e){
72
+
73
+ //ここでフォームの検索条件を取得するが割愛する
74
+
75
+ loadEvent();
76
+
77
+ sendMail_Excel();
78
+
79
+ }
80
+
81
+
82
+
83
+ function loadEvent() {
84
+
85
+ // シートの再作成
86
+
87
+ sheetcreate();
88
+
89
+ var cal = CalendarApp.getCalendarById("カレンダーID");
90
+
91
+ var events = cal.getEvents(new Date(2017, 7, 1), new Date(2017, 7, 31));
92
+
93
+
94
+
95
+ var arr = [];
96
+
97
+ for(var i=0; i < events.length; i++){
98
+
99
+ var e = [];
100
+
101
+ var event = events[i];
102
+
103
+ e.push(event.getStartTime());
104
+
105
+ e.push(event.getEndTime());
106
+
107
+ e.push(event.getTitle());
108
+
109
+ arr.push(e);
110
+
111
+ }
112
+
113
+ paste(arr);
114
+
115
+ }
116
+
117
+
118
+
119
+ /**
120
+
121
+ * シートの再作成
122
+
123
+ */
124
+
125
+ function sheetcreate(){
126
+
127
+ var mspid = "スプレッドシートのID";
128
+
129
+ var ash = SpreadsheetApp.openById(mspid);
130
+
131
+ var sheet = ash.getSheetByName("test1");
132
+
133
+ if(sheet==null){
134
+
135
+ sheet = ash.insertSheet("test1");
136
+
137
+ Logger.log("シート新規作成");
138
+
139
+ }else{
140
+
141
+ sheet.clear();
142
+
143
+ Logger.log("シートクリア");
144
+
145
+ }
146
+
147
+ }
148
+
149
+
150
+
151
+ /**
152
+
153
+ * Sheetに一行追加
154
+
155
+ */
156
+
157
+ function paste(array){
158
+
159
+ var mspid = "スプレッドシートのID";
160
+
161
+ var ash = SpreadsheetApp.openById(mspid);
162
+
163
+ var sheet = ash.getSheetByName("test1");
164
+
165
+
166
+
167
+ //最終行の位置を取得
168
+
169
+ var lastColumn = array[0].length;
170
+
171
+ //カラムの数を取得する
172
+
173
+ var lastRow = array.length;
174
+
175
+ //行の数を取得する
176
+
177
+ sheet.getRange(2,1,lastRow,lastColumn).setValues(array);
178
+
179
+ }
180
+
181
+
182
+
183
+ function sendMail_Excel() {
184
+
185
+ // ファイル関係
186
+
187
+ var targetFileId = "スプレッドシートのID";
188
+
189
+ var objFile;
190
+
191
+ var fileName;
192
+
193
+
194
+
195
+ // メール関係
196
+
197
+ var mailto = "メール送信先";
198
+
199
+ var subject = "スプレッドシート添付テスト";
200
+
201
+ var body = "";
202
+
203
+
204
+
205
+ // その他
206
+
207
+ var fetchUrl;
208
+
209
+ var fetchOpt = {
210
+
211
+ "headers" : { Authorization: "Bearer " + ScriptApp.getOAuthToken() },
212
+
213
+ "muteHttpExceptions" : true
214
+
215
+ };
216
+
217
+
218
+
219
+ var xlsxName;
220
+
221
+ var attachmentFiles = new Array();
222
+
223
+
224
+
225
+ try
226
+
227
+ {
228
+
229
+ // ファイルIDからファイルの名前を取得する
230
+
231
+ objFile = DriveApp.getFileById(targetFileId);
232
+
233
+ fileName = objFile.getName();
234
+
235
+
236
+
237
+ // 添付するExcelファイルの名前
238
+
239
+ xlsxName = fileName + ".xlsx";
240
+
241
+
242
+
243
+ body = xlsxName + "を添付します";
244
+
245
+
246
+
247
+ fetchUrl = "https://docs.google.com/feeds/download/spreadsheets/Export?key=" + targetFileId + "&amp;exportFormat=xlsx";
248
+
249
+ attachmentFiles.push(UrlFetchApp.fetch(fetchUrl, fetchOpt).getBlob().setName(xlsxName));
250
+
251
+ }
252
+
253
+ catch(e){
254
+
255
+ subject = "ERROR:" + subject;
256
+
257
+ body = "エラー : " + e.message;
258
+
259
+ }
260
+
261
+
262
+
263
+ // メール送信
264
+
265
+ GmailApp.sendEmail(mailto, subject, body, {attachments:attachmentFiles});
266
+
267
+ }