ipaからセキュリティ情報を取得(GAS)方法2

GAS

ライブラリに以下を追加
1Jrnqmfa6dNvBTzIgTeilzdo6zk0aUUhcXwLlQEbtkhaRR-fi5eAf4tBJ

{
  "timeZone": "Asia/Tokyo",
  "exceptionLogging": "STACKDRIVER",
  "runtimeVersion": "V8",
  "dependencies": {
    "libraries": [
      {
        "userSymbol": "parser",
        "libraryId": "1Jrnqmfa6dNvBTzIgTeilzdo6zk0aUUhcXwLlQEbtkhaRR-fi5eAf4tBJ",
        "version": "5"
      }
    ]
  }
}
function myFunction() {

  // スプレッドシートのIDを取得
  var SPREADSHEET_ID = SpreadsheetApp.getActiveSpreadsheet().getId();
  console.log(SPREADSHEET_ID);
  var spreadsheet = SpreadsheetApp.openById(SPREADSHEET_ID);
  var sheet = spreadsheet.getSheetByName('シート1');
  var today = new Date();

  // スプレッドシートから前回送信日時を取得する
  var columnBVals = sheet.getRange('B:B').getValues();
  var LastRow = columnBVals.filter(String).length;
  Logger.log(LastRow)
  var beforeday = sheet.getRange('B' + LastRow).getValue();

  var feedURL = "https://www.ipa.go.jp/security/rss/alert.rdf";
  var response = UrlFetchApp.fetch(feedURL);
  var content = response.getContentText();
  //XMLパース(ライブラリを使用)
  var document = XmlService.parse(content);
  Logger.log("document" + document);
  xml = document.getRootElement();

  Logger.log("xml " + xml);

   title = parser.getElementsByTagName(xml, 'title');
   link = parser.getElementsByTagName(xml, 'link');
   date = parser.getElementsByTagName(xml, 'date');

  Logger.log("title" + title.length);
  Logger.log("link" + link.length);
  Logger.log("date" + date.length);

  var news = [];
  var links = [];

  var count = 0;
  for (var i = 1; i <= 10; i++) {
    //ニュースの発表日取得
    year = date[i].getValue().substring(0, 4);
    month = date[i].getValue().substring(5, 7);
    day = date[i].getValue().substring(8, 10);
    newday = new Date(year, month - 1, day);

    if (newday >= beforeday) {
      sendday = newday;
      news.push("No." + (count + 1) + " ■" +  title[i].getValue() + "\n");
      links.push(link[i].getValue() + "\n");
      count++;
    }
  }
  //todayの内容があればメール送信
  var mailTitle = "IPAセキュリティセンター:重要なセキュリティ情報";
  var mailBody = "";

  if (news.length > 0) {

    mailBody += "各位\n\n";
    mailBody += "お疲れさまです。\n\n";
    mailBody += "IPAより重要なセキュリティ情報が発表されましたので、\nお知らせいたします。\n";
    mailBody += "\n以下のリンクより、ご確認お願いします。\n\n";
    mailBody += trim(news.toString());
    mailBody += trim(links.toString()) + "\n\n";
    mailBody += "以上です、宜しくお願いいたします。";

    //送信する
    var to = "";
    MailApp.sendEmail(to, mailTitle, mailBody)
    Logger.log(mailBody)

    //スプレッドシートに送信する時間・ニュース・メール本文を転記※
    sheet.getRange("B" + (LastRow + 1)).setValue(today);
    sheet.getRange("C" + (LastRow + 1)).setValue(news);
    sheet.getRange("D" + (LastRow + 1)).setValue(mailBody);

  }

}

// trim関数を定義する
function trim(target) {
  if (target == null || target == undefined) {
    return "";
  }
  return target.replace(",", "");
}

参考サイト

【GAS】IPAのセキュリティ情報を自動配信する仕組み - Qiita
背景 「セキュリティに関する知識共有」の一環として、 IPAから発信されている重要なセキュリティ情報を社員同報にて送信する仕組みを構築する ※既存のRSSサービスでは不要な情報が混じるので、必要な情報に絞って抽出することが目的 構成 ※構成...
404 NOT FOUND | コーポレートエンジニア
情シス・社内SE・DX推進

コメント