LoginSignup
0
0

More than 5 years have passed since last update.

ツイートをChangeLogっぽい形式でSpreadsheetに記録する

Last updated at Posted at 2017-10-28

一日分のツイートを1エントリ(?)にまとめて ChangeLog っぽい形式でSpradsheetに保存する。

2017-10-28 (土)

* tweet [Diary]:

00:00 hoge
01:15 fuga
02:30 MT @name @h0k0r0bi hogefuga
03:45 FV fugahoge

記録

IFTTT で自分のツイート、リプライ、ライクを spreadsheet に記録

  • Trriger

    • Twitter
      • New Tweet by you (retweets, @replies)
      • New mention of you
      • New liked tweet by you
  • Action
    トリガーそれぞれに対して設定

    • Google drive
      • Add row to spreadsheet

整形

GAS で整形。

  • inputFormula(): ツイートの先頭に時間を付加する形式になる式を3列目に追加
  • copyTweets(): 別シートに3列目をコピー
  • clearSheet(): 記録シートをクリア
  • inputDate(): 日付とエントリのタイトルを3列目に追加
function executePerDay() {
  inputFormula();
  copyTweets();
  clearSheet('Sheet1');
  inputDate();
}

function inputDate() {
  var sheet = SpreadsheetApp.getActive().getSheetByName('Sheet1');
  var d = new Date();
  var year = d.getFullYear();
  var month = d.getMonth() + 1;
  var day = d.getDate();
  var youbi = d.getDay();
  var youbis = ['', '', '', '', '', '', ''];
  sheet.appendRow(["", "Sep"]);
  sheet.appendRow(["", "", year + "-" + month + "-" + day + " (" + youbis[youbi] + ")"]);
  sheet.appendRow(["", "Sep"]);
  sheet.appendRow(["", "", "* tweet [Diary]:"]);
  sheet.appendRow(["", "Sep"]);
}

function inputFormula() {
  var sheet = SpreadsheetApp.getActive().getSheetByName('Sheet1');
  var lastRow = sheet.getLastRow();
  var range;
  for (var i = 1; i <= lastRow; i++) {
    range = sheet.getRange(i, 1);
    if (range.getValue() == "") {
      continue;
    }
    range = sheet.getRange(i, 3);
    if (range.getValue() == "") {
      range.setValue("=text(value((REGEXEXTRACT(A" + i + ",\"[^ ]+$\"))),\"HH:mm \") & B" + i);
    }
  }
}

function copyTweets() {
  var fromSheet = SpreadsheetApp.getActive().getSheetByName('Sheet1');
  var lastRow = fromSheet.getLastRow();
  var fromRange = fromSheet.getRange(1, 3, lastRow);
  var values = fromRange.getValues();

  var toSheet = SpreadsheetApp.getActive().getSheetByName('Sheet2');
  var toLastRow = toSheet.getLastRow();
  var toRange = toSheet.getRange(toLastRow + 2, 1, lastRow);
  toRange.setValues(values);
}

function clearSheet(sheetName) {
  var sheet = SpreadsheetApp.getActive().getSheetByName(sheetName);
  sheet.clearContents();
}

整形の実行トリガー

1日1回0時くらいに実行。

image

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0