【寄り付き直前レポート】(mm/dd) - みんかぶ メールをspreadsheetにまとめちゃう方法

2023年12月27日水曜日

ポートフォリオ戦略

t f B! P L

 【寄り付き直前レポート】(mm/dd) - みんかぶ をspreadsheetに溜め込む方法

みんかぶの寄り付き直前レポート 便利ですね

みんかぶから寄り付き直前レポートをメールで受け取ってる方はそこそこいらっしゃると

思いましてgmailから読み込んでspraedsheetにまとめる方法を共有します。


1.spreadsheetで以下のようなフォーマットで票を作る。日付 好材料 悪材料



2.機能拡張 >appscriptで以下のスクリプトを追加して保存する。

function onOpen() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet();
  var entries = [{
    name: "好材料・悪材料を抽出(日付指定)",
    functionName: "promptForDateAndInsert"
  }];
  sheet.addMenu("好材料・悪材料を抽出", entries);
}

function promptForDateAndInsert() {
  var ui = SpreadsheetApp.getUi();
  var response = ui.prompt('日付を入力してください', '形式: mm/dd (例: 11/24)', ui.ButtonSet.OK_CANCEL);

  // ユーザーがOKを押した場合、入力された日付で関数を実行
  if (response.getSelectedButton() == ui.Button.OK) {
    var date = response.getResponseText();
    insertDataToSpreadsheet(date);
  }
}

function insertDataToSpreadsheet(date) {
  // 引数がない場合は本日の日付を mm/dd 形式で設定
  if(date == null){
    var today = new Date();
    var month = today.getMonth() + 1; // 月は0から始まるため、1を加える
    var day = today.getDate();
    
    // ゼロ埋めを行い、mm/dd 形式に整形
    date = ('0' + month).slice(-2) + '/' + ('0' + day).slice(-2);
  }

  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("s1"); // スプレッドシートとシートの名前を指定
  //var threads = GmailApp.search('subject:​``【寄り付き直前レポート】``​(' + date + ')'); // 日付に基づいてメールを検索

  var query = 'subject:'+'【寄り付き直前レポート】('+date+') - みんかぶ' ;
  var threads = GmailApp.search(query);

// デバッグ用に検索クエリをログに出力
Logger.log("Search Query: " + query);


  for (var i = 0; i < threads.length; i++) {
    var message = threads[i].getMessages()[0];
    var body = message.getBody();

    // 好材料と悪材料のデータを抽出
    var goodMaterials = extractData(body, "【好材料】  ────────────", "━━━━━━━━━━━━━━━━━━━");
    var badMaterials = extractData(body, "【悪材料】  ────────────", "━━━━━━━━━━━━━━━━━━━");

    // スプレッドシートにデータを挿入
    sheet.appendRow([date, goodMaterials,badMaterials]);
  }
}

function extractData(body, startPattern, endPattern) {
  var startIndex = body.indexOf(startPattern);
  var endIndex = body.indexOf(endPattern, startIndex + startPattern.length);

  // 開始パターンまたは終了パターンが見つからない、または開始パターンが終了パターンより後にある場合、空文字列を返す
  if (startIndex == -1 || endIndex == -1 || startIndex > endIndex) {
    return '';
  }

  return body.substring(startIndex + startPattern.length, endIndex).trim();
}

3.spreadsheetを再読み込みして動作確認をする

 ヘルプの右側に「好材料・悪材料を抽出(日付指定)」というメニューが出来ております。日付入力のダイアログが表示されたら 12/27のようにmm/dd形式で入力すると

データがspreadsheetに入力されます。


4.できたけど、どうやって活用するの?

 bardやchatGPTは分析が得意ですから範囲指定で選択して傾向や動向などを分析すると

 楽しいと思います。





QooQ