Скрипт, чтобы открывать длинный список URL по одному каждые 5 секунд, а затем открывать следующий URL - PullRequest
1 голос
/ 29 октября 2019

У меня есть электронная таблица Google с большим количеством URL-адресов API.

Они выглядят так => http://oasis.caiso.com/oasisapi/SingleZip?resultformat=6&queryname=PRC_LMP&version=1&startdatetime=20160101T08:00-0000&enddatetime=20160103T08:00-0000&market_run_id=DAM&grp_type=ALL

База данных, которую я рисую, ограничивает запросы до одного каждые 5 секунд,Когда вы перейдете по ссылке, она загрузит zip-файл с файлами cvs.

Я хотел бы написать скрипт, который будет следовать за URL-адресом, подождать 6 секунд, а затем перейти к следующему URL-адресу в списке.

Я бы хотел, чтобы он остановился, когда дойдет до последнего URL

Я представляю, что мне нужно использовать цикл "когда", но я не могу понять, как установить период ожиданияили как заставить его открыть URL-адрес.

HELP !!!!

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

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

function flink(){
var app = spreasheetapp
//access the current open sheet
var activesheet = app.getactivespreadsheet().getactivesheet()
var activecell= activesheet.getrange(11,11).openurl
//I am getting totally stuck here 

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

Ответы [ 2 ]

1 голос
/ 01 ноября 2019

Для доступа к URL-адресу из AppsScript вы можете использовать UrlFetchApp.fetch(url).

Чтобы заставить скрипт ждать определенное время, вы можете использовать Utilities.sleep(milliseconds).

  • Ссылки:

https://developers.google.com/apps-script/reference/url-fetch/url-fetch-app#fetch(String) https://developers.google.com/apps-script/reference/utilities/utilities#sleepmilliseconds

0 голосов
/ 31 октября 2019

Я придумал этот код, который обращается к каждому URL в листе. Я добавил несколько комментариев, чтобы вы могли видеть, что скрипт делает шаг за шагом:

function accessURLs() {
  // Copy urls
  var ss = SpreadsheetApp.getActive();
  var sheet = ss.getSheetByName("Links up to today");
  // Copy the contents of the url to another column removing the formulas (your script will appreciate this)
  sheet.getRange("C3:C").copyTo(sheet.getRange("D3:D"), {contentsOnly:true});
  var column = 4; // URLs are in column 4
  var row = 3; // URLs start at row 3
  var url = sheet.getRange(row, column).getValue();
  var responses = []
  // Loop through all urls in the sheet until it finds a cell that is blank (no more urls left)
  do {
    var options = {
      muteHttpExceptions: true
    }
    var response = UrlFetchApp.fetch(url, options); // Script makes a request to the url
    responses.push(response); // The latest response is added to the responses array
    Utilities.sleep(6000); // The script stops for 6 seconds
    row++;
    url = sheet.getRange(row, column).getValue();
  } while (url != ""); // Cell is not blank
}

Примите во внимание, что если нам нужно получить доступ к ~ 1400 URL, и скрипт останавливается на 6 секунд после каждой выборки, онпотребуется более 2 часов для доступа ко всем URL-адресам.

Кроме того, учтите, что этот скрипт просто получает данные, поступающие из запросов URL-адресов (он хранится в ответах переменных), но ничего не делаетостальное. В зависимости от того, что вы хотите сделать с этими данными, вы можете добавить туда какие-то дополнительные материалы.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...