[GAS] 야후에서 검색한 결과를 메일로 보내는 방법.

개시하다


이 기사는 생산성 향상을 위해 GAS를 활용해 우편으로 쓰레기 처리 결과를 보내고자 하는 이들을 겨냥한 기사다.
표준 기능의 소개가 아니라 개인이 만든 스크립트의 공유이기 때문에 실시 방법의 참고가 되었으면 좋겠습니다!

설치 방법


실행할 코드


function sendMail() {
  const arr = search("React.js OR Next.js");
  const mailAddress = Session.getActiveUser().getUserLoginId();
  let body = "<h1>React.js関連情報</h1>";
  body += arr
    .map((item) => {
      return `<p><a href="${item.url}" alt="data">${item.title}</a></p>`;
    })
    .join("");
  MailApp.sendEmail({
    to: mailAddress,
    subject: "React.js関連情報",
    htmlBody: body,
  });
}

이번에 만든 함수


함수 바디


function search(word, option = {}) {
  let result = [];
  const defaultOption = {
    x: "wrt",
    aq: -1,
    ai: "",
    ei: "UTF-8",
    vd: "w",
    pages: 2,
  };
  const baseOption = { ...defaultOption, ...option };
  const param = Object.keys(baseOption)
    .map((key) => {
      return `${key}=${encodeURI(baseOption[key])}`;
    })
    .join("&");
  const pageCount = baseOption.pages;
  const linkRegexp = /<a href=\"(.*?) .*?ping.*?>.*?<\/a>/gm;
  const urlRegexp = /href=\"(.*?)\"/;
  const titleRegexp = /<a .*?>(.*?)<\/a>/;
  [...new Array(pageCount)].forEach((value, index) => {
    try {
      const searchUrl =
        "https://search.yahoo.co.jp/search?p=" +
        encodeURI(word) +
        "&" +
        param +
        "&b=" +
        (index * 10 + 1);
      const response = UrlFetchApp.fetch(searchUrl);
      const elems = response.getContentText().match(linkRegexp);
      elems.forEach((elem) => {
        const url = elem.match(urlRegexp)[1];
        if (url === "https://www.yahoo.co.jp") return;
        const title = elem.match(titleRegexp)[1];
        result.push({
          url: url,
          title: title
            .replaceAll("<b>", "")
            .replaceAll("</b>", "")
            .replaceAll("<br>", ""),
        });
      });
    } catch (e) {
      Logger.log("NG count: " + index);
    }
  });
  return result;
}

최후


이번에 소개한 함수를 사용하여 조금이라도 여러분의 업무 효율과 연결할 수 있기를 바랍니다. 사용한 소감을 말씀해 주시면 기쁩니다!
그리고 팩스와 대체 방법이 있으면 알려주세요.
끝까지 졸렬한 글이지만 함께 해주셔서 감사합니다.

참고 문장


  • GAS 실행 사용자의 메일 주소 (Google 계정) 를 가져오는 방법

  • GAS에서 지정된 URL에 요청하여 롤업을 시도합니다.
  • 좋은 웹페이지 즐겨찾기