Я хочу понять, как я могу запустить приложение-скрипт Google, чтобы извлечь информацию о школах в определенном состоянии - PullRequest
0 голосов
/ 26 апреля 2019

Я пытаюсь создать базу данных для всех школ в определенном штате.Я написал Google-скрипт приложения, который извлекает информацию о школе и вставляет ее в электронную таблицу.Проблема в том, что я хочу автоматизировать процесс изменения названия школы в URL-адресе на основе тех, которые у меня есть.

Я также ищу извлечение place_id на основе Lat и Long и с типом= школа, но не работает, и в ней работают только 20 школ:

function onOpen() {
var ui = SpreadsheetApp.getUi();


ui.createMenu('Google Place Search')
      .addItem('Buscar Informacion','callgooglemapsapi')
      .addToUi();
}
function callgooglemapsapi() 
{

  var response = UrlFetchApp.fetch("https://maps.googleapis.com/maps/api/place/findplacefromtext/json?input=El%20Colegio%20de%20Tamaulipas&inputtype=textquery&fields=formatted_address,type,place_id,geometry,icon,id,name,permanently_closed,photos,place_id,plus_code,user_ratings_total&key=AIzaSyDQlB5xlLhSQZhdIkBGR0WXiWPLVqMwKkM");
  // Parse the JSON reply
  var json = response.getContentText();
  var data = JSON.parse(json);

  Logger.log(data);
  Logger.log(data["candidates"]);
  Logger.log(data["candidates"][0]);
  var sheet = SpreadsheetApp.getActiveSheet();
  sheet.getRange(sheet.getLastRow() + 1,1).setValue(data["candidates"][0]["name"]);
  sheet.getRange(sheet.getLastRow() + 0,2).setValue(data["candidates"][0]["formatted_address"]);
  sheet.getRange(sheet.getLastRow() + 0,3).setValue(data["candidates"][0]["geometry"]["location"]["lng"]);
  sheet.getRange(sheet.getLastRow() + 0,4).setValue(data["candidates"][0]["geometry"]["location"]["lat"]);
  sheet.getRange(sheet.getLastRow() + 0,5).setValue(data["candidates"][0]["geometry"]["viewport"]["southwest"]["lng"]);
  sheet.getRange(sheet.getLastRow() + 0,6).setValue(data["candidates"][0]["geometry"]["viewport"]["southwest"]["lat"]);
  sheet.getRange(sheet.getLastRow() + 0,7).setValue(data["candidates"][0]["geometry"]["viewport"]["northeast"]["lng"]);
  sheet.getRange(sheet.getLastRow() + 0,8).setValue(data["candidates"][0]["geometry"]["viewport"]["northeast"]["lat"]);
  sheet.getRange(sheet.getLastRow() + 0,9).setValue(data["candidates"][0]["place_id"]);
  sheet.getRange(sheet.getLastRow() + 0,10).setValue(data["candidates"][0]["photo_reference"]);
  sheet.getRange(sheet.getLastRow() + 0,11).setValue(data["candidates"][0]["plus_code"]);
  sheet.getRange(sheet.getLastRow() + 0,12).setValue(data["candidates"][0]["types"]);

Я рассчитываю извлечь подробную информацию и фотографии и вставить их в электронную таблицу. У меня 4000 названий школ.

1 Ответ

0 голосов
/ 27 апреля 2019

Я ожидаю, что это будет выглядеть примерно так:

function getSchoolData() {
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getSheetByName('SchoolNames');//assume names in column A
  var rg=sh.getRange(2,1,sh.getLastRow-1,1);//skip header assume 1 row
  var vA=rg.getValues();
  var shB=ss.getSheetByName('SchoolData');
  var vB=[]
  for(var i=0;i<vA.length;i++) {
    vB.push(callgooglemapsapi(vA[i][0],sh));
    Utilities.sleep(milliseconds);//you may need a delay in here
  }
  shB.getRange(2,1,vB.length,vB[0].length).setValues(vB);
}


function callgooglemapsapi(schoolname,sheetname) {
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getSheetByName(sheetname)||ss.getActiveSheet();
  var baseUrl="https://maps.googleapis.com/maps/api/place/findplacefromtext/json"
  var key="AIzaSyDQlB5xlLhSQZhdIkBGR0WXiWPLVqMwKkM";
  var qs="?input=" + encodeURIComponent(schoolname) + "&inputtype=textquery&fields=formatted_address,type,place_id,geometry,icon,id,name,permanently_closed,photos,place_id,plus_code,user_ratings_total&key="
  var response = UrlFetchApp.fetch(baseUrl + qs + key);
  var data = JSON.parse(response.getContentText());
  return [schoolname,data["candidates"][0]["name"],data["candidates"][0]["formatted_address"],data["candidates"][0]["geometry"]["location"]["lng"],data["candidates"][0]["geometry"]["location"]["lat"],data["candidates"][0]["geometry"]["viewport"]["southwest"]["lng"],data["candidates"][0]["geometry"]["viewport"]["southwest"]["lat"],data["candidates"][0]["geometry"]["viewport"]["northeast"]["lng"],data["candidates"][0]["geometry"]["viewport"]["northeast"]["lat"],data["candidates"][0]["place_id"],data["candidates"][0]["photo_reference"],data["candidates"][0]["plus_code"],data["candidates"][0]["types"]];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...