Google应用javascript函数可返回搜索字词的匹配数

时间:2013-06-21 01:25:05

标签: javascript api search google-apps-script google-sheets

如何实施Google应用脚本以返回Google搜索的点击次数?具体来说,我有一个Google电子表格,其中单元格A2中的公式为=GOOGLEHITS (A1)

我到目前为止:

function GoogleHits (keywords) 
{
return ??? ("\"" + keywords + "\"") ;
}

并想知道“???”应该替换为

1 个答案:

答案 0 :(得分:1)

假设您正在寻找一种从Google搜索页面中提取结果计数的方法。首先,弄清楚页面中包含的位置。例如,在Firefox中,您可以使用Inspector(Inspect Element)执行此操作。

Screenshot

以前有一些关于从网页中解析信息的问题,使用UrlFetch和Xml服务很容易完成。有关某些背景信息,请参阅这些其他问题,以及简化解决方案的便捷getDivById()功能。

代码

GoogleHits功能可用作工作表中的自定义功能。测试函数直接调用它。

function test_GoogleHits() {
  function test( keywords ) {
    Logger.log( keywords + ' : ' + GoogleHits(keywords) );
  }

  test('googlehits');
  test('pizza');
  test('today\'s weather' );
}

function GoogleHits(keywords) {
  var target = "https://www.google.ca/search?q="+encodeURI(keywords);

  var pageTxt = UrlFetchApp.fetch(target).getContentText();
  var pageDoc = Xml.parse(pageTxt,true);
  var contentDiv = getDivById( pageDoc.getElement().body, 'resultStats' );
  return extractInteger( contentDiv.Text );
}

function extractInteger(str) {
  var num = "";
  var inNum = false;
  for(var i=0; i<str.length; i++) {
    var c = str.charAt(i);
    if (c>='0' && c<= '9') {
      if (!inNum) inNum = true;
      num += c;
    }
    else if (c !== ',') {
      if (inNum) break;
    }
  }
  return parseInt(num);
}