質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.53%

  • Google Apps Script

    829questions

    Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

関連するデータを1行に抽出したい。

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 119

koromo_t

score 50

スプレッドシートにて読書リストを作っています。
全力を尽くしましたが、力尽きましたので、
みなさまのお知恵をお借りできればと思い、質問します。

とりあえず、経緯、現状など説明します。

 やったこと

当方、読書の記録として、本の「読み始め」と「読了」のタイミングで、
Twitterへツイートするようにしています。
※読み始め→「○○を読んでいる本に追加」、読了→「○○を読んだ本に追加」

そこで、IFTTTを使って、

  • 「自分のTwitterアカウントID」
  • 「を読んでいる本に追加」
  • 「を読んだ本に追加」
  • 「bookmeter.com」

これらのキーワードをキーとして、
該当するツイートをスプレッドシートへ取得するようにしました。

そして、なんとかかんとか、
「本のタイトル」と「著者名」のリストを自動的に作ることはできまして、
あとは、「読み始めの日時」と、「読了の日時」を自動で書き込むスクリプトが書けたら、
期待通りの読書リストが出来るのですが、力尽きました。

--

  • 「本Aのタイトル」
  • 「(本Aの)著者」
  • 「”本Aを読んでいる本に追加”のツイート日時」
  • 「”本Aを読んだ本に追加”のツイート日時」

これらを1行に抽出することが必要だと考えますが、
もしかしたら、それこそがネックであり、
越えられない壁なのかもしれないと、薄々思うのですが、
そうであったとしても、ここに至るまでにかなりの学習をすることができたので、
それはそれでよしとする覚悟もあるのですが、
もし、なにかよい方法があれば、お知恵を貸していただけると幸いです。

とりあえず、書いたスクリプトを書いておきます。

// 日時の取得
function addDate() {
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = spreadsheet.getSheetByName('生ログ');
  var lastRow = sheet.getLastRow();
  sheet.getRange(lastRow, 1).setValue(new Date());
}

function seikei() {
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var sheet_nama = spreadsheet.getSheetByName('生ログ');
  var sheet = spreadsheet.getSheetByName('読書リスト');
  var lastRow_nama = sheet_nama.getLastRow();
  // タイトルと著者部分
  var reg3 = "【(.*?)】";
  var title_hissya_nama = sheet_nama.getRange(lastRow_nama,3).getValue().match(reg3)[1];
  Logger.log(title_hissya_nama);
  // タイトルの抽出
  var reg = "^(.*?)\/";
  var title_nama = title_hissya_nama.match(reg)[1];
  Logger.log(title_nama);
  var lastRow = sheet.getLastRow();
  var title = sheet.getRange(lastRow+1,2);
  if(title_nama != null ){
  title.setValue(title_nama);
  }
  else{
  title.setValue(title_hissya_nama);
  }
  // 著者の抽出
  var reg2 = "\/(.*?)$";
  var hissya_nama = title_hissya_nama.match(reg2)[1];
  Logger.log(hissya_nama);
  var hissya = sheet.getRange(lastRow+1,3);
  hissya.setValue(hissya_nama);
  if(title_nama != null ){
  }
}

そしてこれは、主筋から離れる話ではあるのですが、
IFTTTを使った収集では新規のツイートからしかリストを作れませんよね。
これがもっと、過去のツイートについても、
リスト化できる仕組みがあればいいなぁとは思うのですが、
まぁ、それがやりたいのであれば、さすがに手打ちということになるでしょうか。

 追記(2018/05/04 6:49)

答えは出ていませんが、本のタイトルと著者の抽出まで出来た現状でもだいぶ捗るので、
あとの読み始めと読了の日時は、IFTTTで得たデータの時間をコピペしようと思いました。
ありがとうございました。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

check解決した方法

0

 追記(2018/05/04 6:49)

答えは出ていませんが、本のタイトルと著者の抽出まで出来た現状でもだいぶ捗るので、
あとの読み始めと読了の日時は、IFTTTで得たデータの時間をコピペしようと思いました。
ありがとうございました。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.53%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • Google Apps Script

    829questions

    Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。