0

How would I go about implementing a Google app script for returning the number of hits from a Google search? Specifically I have a Google spreadsheet where the formula in cell A2 is =GOOGLEHITS (A1).

I've got as far as:

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

and would like to know what "???" should be replaced with

4

1 回答 1

1

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

截屏

以前有关于从网页中解析信息的问题,使用 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);
}
于 2013-08-29T19:17:39.917 回答