teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

3

ソース表示方法変更

2017/08/09 10:21

投稿

kikukiku
kikukiku

スコア537

title CHANGED
File without changes
body CHANGED
@@ -33,6 +33,7 @@
33
33
  また、即時スプレッドシートへの反映の仕方などありませんでしょうか?
34
34
 
35
35
  ###ソース
36
+ ```ここに言語を入力
36
37
  function submitForm(e){
37
38
  //ここでフォームの検索条件を取得するが割愛する
38
39
  loadEvent();
@@ -109,4 +110,5 @@
109
110
 
110
111
  // メール送信
111
112
  GmailApp.sendEmail(mailto, subject, body, {attachments:attachmentFiles});
112
- }
113
+ }
114
+ ```

2

ソースの文字化け修正

2017/08/09 10:21

投稿

kikukiku
kikukiku

スコア537

title CHANGED
File without changes
body CHANGED
@@ -40,7 +40,6 @@
40
40
  }
41
41
 
42
42
  function loadEvent() {
43
- // シートの再作成
44
43
  sheetcreate();
45
44
  var cal = CalendarApp.getCalendarById("カレンダーID");
46
45
  var events = cal.getEvents(new Date(2017, 7, 1), new Date(2017, 7, 31));
@@ -57,50 +56,34 @@
57
56
  paste(arr);
58
57
  }
59
58
 
60
- /**
61
- * シートの再作成
62
- */
63
59
  function sheetcreate(){
64
60
  var mspid = "スプレッドシートのID";
65
61
  var ash = SpreadsheetApp.openById(mspid);
66
62
  var sheet = ash.getSheetByName("test1");
67
63
  if(sheet==null){
68
64
  sheet = ash.insertSheet("test1");
69
- Logger.log("シート新規作成");
70
65
  }else{
71
66
  sheet.clear();
72
- Logger.log("シートクリア");
73
67
  }
74
68
  }
75
69
 
76
- /**
77
- * Sheetに一行追加
78
- */
79
70
  function paste(array){
80
71
  var mspid = "スプレッドシートのID";
81
72
  var ash = SpreadsheetApp.openById(mspid);
82
73
  var sheet = ash.getSheetByName("test1");
83
74
 
84
- //最終行の位置を取得
85
75
  var lastColumn = array[0].length;
86
- //カラムの数を取得する
87
76
  var lastRow = array.length;
88
- //行の数を取得する
89
77
  sheet.getRange(2,1,lastRow,lastColumn).setValues(array);
90
78
  }
91
79
 
92
80
  function sendMail_Excel() {
93
- // ファイル関係
94
81
  var targetFileId = "スプレッドシートのID";
95
82
  var objFile;
96
83
  var fileName;
97
-
98
- // メール関係
99
84
  var mailto = "メール送信先";
100
85
  var subject = "スプレッドシート添付テスト";
101
86
  var body = "";
102
-
103
- // その他
104
87
  var fetchUrl;
105
88
  var fetchOpt = {
106
89
  "headers" : { Authorization: "Bearer " + ScriptApp.getOAuthToken() },
@@ -112,15 +95,10 @@
112
95
 
113
96
  try
114
97
  {
115
- // ファイルIDからファイルの名前を取得する
116
98
  objFile = DriveApp.getFileById(targetFileId);
117
99
  fileName = objFile.getName();
118
-
119
- // 添付するExcelファイルの名前
120
100
  xlsxName = fileName + ".xlsx";
121
-
122
101
  body = xlsxName + "を添付します";
123
-
124
102
  fetchUrl = "https://docs.google.com/feeds/download/spreadsheets/Export?key=" + targetFileId + "&exportFormat=xlsx";
125
103
  attachmentFiles.push(UrlFetchApp.fetch(fetchUrl, fetchOpt).getBlob().setName(xlsxName));
126
104
  }

1

ソースを追加

2017/08/08 01:17

投稿

kikukiku
kikukiku

スコア537

title CHANGED
File without changes
body CHANGED
@@ -30,4 +30,105 @@
30
30
 
31
31
  ###質問
32
32
  どのような全体設計をすれば実現したいことが可能になりますでしょうか?
33
- また、即時スプレッドシートへの反映の仕方などありませんでしょうか?
33
+ また、即時スプレッドシートへの反映の仕方などありませんでしょうか?
34
+
35
+ ###ソース
36
+ function submitForm(e){
37
+ //ここでフォームの検索条件を取得するが割愛する
38
+ loadEvent();
39
+ sendMail_Excel();
40
+ }
41
+
42
+ function loadEvent() {
43
+ // シートの再作成
44
+ sheetcreate();
45
+ var cal = CalendarApp.getCalendarById("カレンダーID");
46
+ var events = cal.getEvents(new Date(2017, 7, 1), new Date(2017, 7, 31));
47
+
48
+ var arr = [];
49
+ for(var i=0; i < events.length; i++){
50
+ var e = [];
51
+ var event = events[i];
52
+ e.push(event.getStartTime());
53
+ e.push(event.getEndTime());
54
+ e.push(event.getTitle());
55
+ arr.push(e);
56
+ }
57
+ paste(arr);
58
+ }
59
+
60
+ /**
61
+ * シートの再作成
62
+ */
63
+ function sheetcreate(){
64
+ var mspid = "スプレッドシートのID";
65
+ var ash = SpreadsheetApp.openById(mspid);
66
+ var sheet = ash.getSheetByName("test1");
67
+ if(sheet==null){
68
+ sheet = ash.insertSheet("test1");
69
+ Logger.log("シート新規作成");
70
+ }else{
71
+ sheet.clear();
72
+ Logger.log("シートクリア");
73
+ }
74
+ }
75
+
76
+ /**
77
+ * Sheetに一行追加
78
+ */
79
+ function paste(array){
80
+ var mspid = "スプレッドシートのID";
81
+ var ash = SpreadsheetApp.openById(mspid);
82
+ var sheet = ash.getSheetByName("test1");
83
+
84
+ //最終行の位置を取得
85
+ var lastColumn = array[0].length;
86
+ //カラムの数を取得する
87
+ var lastRow = array.length;
88
+ //行の数を取得する
89
+ sheet.getRange(2,1,lastRow,lastColumn).setValues(array);
90
+ }
91
+
92
+ function sendMail_Excel() {
93
+ // ファイル関係
94
+ var targetFileId = "スプレッドシートのID";
95
+ var objFile;
96
+ var fileName;
97
+
98
+ // メール関係
99
+ var mailto = "メール送信先";
100
+ var subject = "スプレッドシート添付テスト";
101
+ var body = "";
102
+
103
+ // その他
104
+ var fetchUrl;
105
+ var fetchOpt = {
106
+ "headers" : { Authorization: "Bearer " + ScriptApp.getOAuthToken() },
107
+ "muteHttpExceptions" : true
108
+ };
109
+
110
+ var xlsxName;
111
+ var attachmentFiles = new Array();
112
+
113
+ try
114
+ {
115
+ // ファイルIDからファイルの名前を取得する
116
+ objFile = DriveApp.getFileById(targetFileId);
117
+ fileName = objFile.getName();
118
+
119
+ // 添付するExcelファイルの名前
120
+ xlsxName = fileName + ".xlsx";
121
+
122
+ body = xlsxName + "を添付します";
123
+
124
+ fetchUrl = "https://docs.google.com/feeds/download/spreadsheets/Export?key=" + targetFileId + "&amp;exportFormat=xlsx";
125
+ attachmentFiles.push(UrlFetchApp.fetch(fetchUrl, fetchOpt).getBlob().setName(xlsxName));
126
+ }
127
+ catch(e){
128
+ subject = "ERROR:" + subject;
129
+ body = "エラー : " + e.message;
130
+ }
131
+
132
+ // メール送信
133
+ GmailApp.sendEmail(mailto, subject, body, {attachments:attachmentFiles});
134
+ }