IFTTTを使ってTwitterのツイートの日時を取得する際、{{CreatedAt}}を使ったら、
「May 05, 2018 at 11:57PM」という表記で出力されることがわかりました。
これを、「2018/05/05 23:57」という表記に書き換えたいのですが、
方針としては、どのようにすればよいでしょうか。
「May 05, 2018 at 11:57PM」は文字列として認識されているようなので、
スプレッドシートのツールバー?の「123」と書かれたボタンからは、
表記の変更はできないようです。
追記(2018/05/07 23:12)
papinianusさんの回答を参考に、ちょっと書いてみたスクリプトです!
じわじわとゴールへ向かっている感が…♪
javaScript
1function myFunction() { 2 var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); 3 var sheet = spreadsheet.getSheetByName('生ログ'); 4 var sheet_hiduke = spreadsheet.getSheetByName('日付成形'); 5 6 // シート「生ログ」関連 7 var lastRow = sheet.getLastRow(); 8 var lastRow_range = sheet.getRange(lastRow,1); 9 var lastRow_val = sheet.getRange(lastRow,1).getValue(); 10 Logger.log(lastRow_val); 11 12 // シート「日付成形」関連 13 var lastRow_hiduke = sheet_hiduke.getLastRow(); 14 var lastRow_hiduke_range = sheet_hiduke.getRange(lastRow_hiduke,1); // ←ここに日付を書き込みたい。 15 16 var str = lastRow_val; 17 Logger.log(str); 18 19 // 日付を抽出 20 var parse = str.replace(",", "").split(" "); 21 return new Date(parse[2], ToMonth(parse[0]), parse[1]); 22 23function ToMonth(str) { 24 switch(str) 25 { 26 case "May": return 4; 27 } 28} 29}
追記2(2018/05/08 19:02)
javaScript
1function DateConverter() { 2 var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); 3 4 // シート「生ログ」関連 5 var sheet = spreadsheet.getSheetByName('生ログ'); 6 var lastRow = sheet.getLastRow(); 7 var lastRow_val = sheet.getRange(lastRow,1).getValue(); 8 Logger.log(lastRow_val); 9 10 // シート「日付成形」関連 11 var sheet_hiduke = spreadsheet.getSheetByName('日付成形'); 12 var lastRow_hiduke = sheet_hiduke.getLastRow(); 13 var lastRow_hiduke_range = sheet_hiduke.getRange(lastRow_hiduke,1); // ←ここに日付を書き込みたい。 14 15 var str = lastRow_val; 16 Logger.log(str); 17 18 var year = str.split(" ")[2]; 19 Logger.log(year); 20 var month = MonthNameToNumber(str.split(" ")[0]) - 1;//Dateを作るとき月は0はじまり 21 Logger.log(month); 22 var day = str.replace(",", "").split(" ")[1]; 23 Logger.log(day); 24 var hour_min_ampm = str.split(" ")[4]; 25 Logger.log(hour_min_ampm); 26 var hour = hour_min_ampm.slice(0,2); 27 Logger.log(hour); 28 var min = hour_min_ampm.slice(3,5); 29 Logger.log(min); 30 var ampm = hour_min_ampm.slice(5,8); 31 Logger.log(ampm); 32 var date = new Date(year, month, day, hour, min); 33 Logger.log(date); 34 lastRow_hiduke_range.setValue(date); 35} 36function MonthNameToNumber(shortname) { 37 switch(shortname) { 38 case "January" : return 1; 39 case "February" : return 2; 40 case "March" : return 3; 41 case "April" : return 4; 42 case "May" : return 5; 43 case "June" : return 6; 44 case "July" : return 7; 45 case "August" : return 8; 46 case "September" : return 9; 47 case "October" : return 10; 48 case "November" : return 11; 49 case "December" : return 12; 50 } 51}
追記3(2018/05/08 19:49)
javaScript
1function DateConverter() { 2 var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); 3 4 // シート「生ログ」関連 5 var sheet = spreadsheet.getSheetByName('生ログ'); 6 var lastRow = sheet.getLastRow(); 7 var lastRow_val = sheet.getRange(lastRow,1).getValue(); 8 Logger.log(lastRow_val); 9 10 // シート「日付成形」関連 11 var sheet_hiduke = spreadsheet.getSheetByName('日付成形'); 12 var lastRow_hiduke = sheet_hiduke.getLastRow(); 13 var lastRow_hiduke_range = sheet_hiduke.getRange(lastRow_hiduke,1); // ←ここに日付を書き込みたい。 14 15 var str = lastRow_val; 16 Logger.log(str); 17 18 var year = str.split(" ")[2]; 19 Logger.log(year); 20 var month = MonthNameToNumber(str.split(" ")[0]) - 1;//Dateを作るとき月は0はじまり 21 Logger.log(month); 22 var day = str.replace(",", "").split(" ")[1]; 23 Logger.log(day); 24 var hour_min_ampm = str.split(" ")[4]; 25 Logger.log(hour_min_ampm); 26 var hour = hour_min_ampm.slice(0,2); 27 Logger.log(hour); 28 var min = hour_min_ampm.slice(3,5); 29 Logger.log(min); 30 var ampm = hour_min_ampm.slice(5,8); 31 Logger.log(ampm); 32 var date_AM = new Date(year, month, day, hour, min); 33 Logger.log(date_AM); 34 var hour_PM = date_AM.getHours()+12; 35 Logger.log(hour_PM); 36 if(ampm=="AM"){ 37 lastRow_hiduke_range.setValue(date_AM); 38 } 39 else{ 40 var date_PM = new Date(year, month, day, hour_PM, min); 41 Logger.log(date_PM); 42 lastRow_hiduke_range.setValue(date_PM); 43 } 44} 45function MonthNameToNumber(shortname) { 46 switch(shortname) { 47 case "January" : return 1; 48 case "February" : return 2; 49 case "March" : return 3; 50 case "April" : return 4; 51 case "May" : return 5; 52 case "June" : return 6; 53 case "July" : return 7; 54 case "August" : return 8; 55 case "September" : return 9; 56 case "October" : return 10; 57 case "November" : return 11; 58 case "December" : return 12; 59 } 60}
追記4【スクリプト完成】(2018/05/08 20:34)
IFTTT側にて「=DateConverter({{CreatedAt}})」と設定すると、
{{CreatedAt}}部分が数字として認識されるようなので、
「=DateConverter(“{{CreatedAt}}”)」とダブルクオーテーションで囲ったところ、
期待通りの結果を得ることができました!
javaScript
1function DateConverter(str) { 2 var year = str.split(" ")[2]; 3 Logger.log(year); 4 var month = MonthNameToNumber(str.split(" ")[0]) - 1;//Dateを作るとき月は0はじまり 5 Logger.log(month); 6 var day = str.replace(",", "").split(" ")[1]; 7 Logger.log(day); 8 var hour_min_ampm = str.split(" ")[4]; 9 Logger.log(hour_min_ampm); 10 var hour = hour_min_ampm.slice(0,2); 11 Logger.log(hour); 12 var min = hour_min_ampm.slice(3,5); 13 Logger.log(min); 14 var ampm = hour_min_ampm.slice(5,8); 15 Logger.log(ampm); 16 var date_AM = new Date(year, month, day, hour, min); 17 Logger.log(date_AM); 18 var hour_PM = date_AM.getHours()+12; 19 Logger.log(hour_PM); 20 if(ampm=="AM"){ 21 return date_AM; 22 } 23 else{ 24 var date_PM = new Date(year, month, day, hour_PM, min); 25 Logger.log(date_PM); 26 return date_PM; 27 } 28} 29function MonthNameToNumber(shortname) { 30 switch(shortname) { 31 case "January" : return 1; 32 case "February" : return 2; 33 case "March" : return 3; 34 case "April" : return 4; 35 case "May" : return 5; 36 case "June" : return 6; 37 case "July" : return 7; 38 case "August" : return 8; 39 case "September" : return 9; 40 case "October" : return 10; 41 case "November" : return 11; 42 case "December" : return 12; 43 } 44}
追記5【微調整】(2018/05/13 0:57)
日付が変わったら、hour部分が0になって、00:00AMという表記になると思うじゃろ。
それがなぜか、IFTTTのCreatedAtを使って取得した文字列は12:00AMとなるようなので(※)、
スクリプトのhour部分に「.replace("12", "0")」を足すことで、
日付が変われば24時間制表記の「00:00」となるようにしました。
(※:調べてみると、英米式の12時間制表記はそういうものらしいですね。)
正午にどのような反応をするかは未確認ながら、おそらく12:00PMとなるはずなので、
hourの12を0に置き換えて、PMなのでhourに12が足されるスクリプトが働き、
結果、24時間制表記の「12:00」を得ることができるはず。
javaScript
1function DateConverter(str) { 2 var year = str.split(" ")[2]; 3 Logger.log(year); 4 var month = MonthNameToNumber(str.split(" ")[0]) - 1;//Dateを作るとき月は0はじまり 5 Logger.log(month); 6 var day = str.replace(",", "").split(" ")[1]; 7 Logger.log(day); 8 var hour_min_ampm = str.split(" ")[4]; 9 Logger.log(hour_min_ampm); 10 var hour = hour_min_ampm.slice(0,2).replace("12", "0"); 11 Logger.log(hour); 12 var min = hour_min_ampm.slice(3,5); 13 Logger.log(min); 14 var ampm = hour_min_ampm.slice(5,8); 15 Logger.log(ampm); 16 var date_AM = new Date(year, month, day, hour, min); 17 Logger.log(date_AM); 18 var hour_PM = date_AM.getHours()+12; 19 Logger.log(hour_PM); 20 if(ampm=="AM"){ 21 return date_AM; 22 } 23 else{ 24 var date_PM = new Date(year, month, day, hour_PM, min); 25 Logger.log(date_PM); 26 return date_PM; 27 } 28} 29function MonthNameToNumber(shortname) { 30 switch(shortname) { 31 case "January" : return 1; 32 case "February" : return 2; 33 case "March" : return 3; 34 case "April" : return 4; 35 case "May" : return 5; 36 case "June" : return 6; 37 case "July" : return 7; 38 case "August" : return 8; 39 case "September" : return 9; 40 case "October" : return 10; 41 case "November" : return 11; 42 case "December" : return 12; 43 } 44}

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/05/08 15:20 編集
2018/05/08 12:02 編集
2018/05/08 15:06
2018/05/08 15:10
2018/05/09 08:51 編集
2018/05/09 09:30 編集
2018/05/10 04:24
2018/05/11 15:01