Я хочу загрузить веб-страницу, созданную с помощью JS (например, AngularJS или аналогичного), а затем очистить ее, используя (только) скрипт Google Apps. Как я могу выполнить sh это?
Я ищу что-то вроде:
const response = UrlFetchApp.fetch( urlToExternalJsPage );
const content = response.getContentText();
// scrape content
Только, может быть, заменить UrlFetchApp
на вызов библиотеки или что-то в этом роде? Возможно, библиотека Puppeteer для GAS, библиотека Cheerio для GAS или что-то еще?
Как я могу загрузить загруженную извне страницу JS и прочитать HTML с этой страницы после того, как сгенерирован, чтобы очистить его?
Идея 1
Я наткнулся на эту статью: Лучший способ загрузки Javascript, который предоставляет следующий код.
function loadScript(url, callback){
var script = document.createElement("script")
script.type = "text/javascript";
if (script.readyState){ //IE
script.onreadystatechange = function(){
if (script.readyState == "loaded" || script.readyState == "complete"){
script.onreadystatechange = null;
callback();
}
};
} else { //Others
script.onload = function(){
callback();
};
}
script.src = url;
document.getElementsByTagName("head")[0].appendChild(script);
}
Фактический код на вашей странице в конечном итоге выглядит следующим образом:
<script type="text/javascript" src="http://your.cdn.com/first.js"></script>
<script type="text/javascript">
loadScript("http://your.cdn.com/second.js", function(){
//initialization code
});
</script>
Проблема с этим подходом в том, что я стараюсь оставаться строго на стороне сервера. Я не пытаюсь публиковать какие-либо HTML страницы и / или обслуживать их.
Идея 2
Я наткнулся на эту статью , которая, кажется, описывает какую-то библиотеку Puppeteer для ГАЗА. Я перевел его с японского с помощью Google Translate. Проблема в том, что для этого нужно использовать Google Cloud Platform, и я хочу этого избежать. Я также хочу избежать выставления счетов и просто оставаться в рамках скрипта Google Apps.
Idea 3
Возможно, есть способ использовать браузер, который поставляется со службой пользовательского интерфейса. В частности, боковая панель?
На этой странице я нашел следующий пример импорта веб-страниц на страницу службы HTML с использованием IFRAME
.
Code.gs
function doGet() {
var template = HtmlService.createTemplateFromFile('top');
return template.evaluate();
}
верх. html
<!DOCTYPE html>
<html>
<body>
<div>
<a href="http://google.com" target="_top">Click Me!</a>
</div>
</body>
</html>