Как перемещать диапазон ячеек и задавать значение в соседнем столбце
Я изучаю скрипты Google Apps для использования с Google Spreadsheets.
У меня есть список URL-адресов в одном столбце, и я хочу написать script, чтобы получить элемент заголовка из каждого URL-адреса и записать его в соседнюю ячейку. Я выполнил это для одной конкретной ячейки в соответствии со следующим script:
function getTitles() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("url_list");
var range = sheet.getRange("G3");
var url = range.getValue();
var response = UrlFetchApp.fetch(url);
var doc = Xml.parse(response.getContentText(),true);
var title = doc.html.head.title.getText();
var output = sheet.getRange("H3").setValue(title);
Logger.log(title);
return title;
}
Получает URL-адрес в G3, анализирует его, тянет элемент и записывает вывод в H3.
Теперь, когда у меня есть этот базовый строительный блок, я хочу закодировать весь столбец G и записать вывод в соседнюю ячейку, но я застрял. Может ли кто-нибудь указать мне в правильном направлении?
Ответы
Ответ 1
Может выглядеть примерно так:
function getTitles() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("url_list");
var urls = sheet.getRange("G3:G").getValues();
var titleList = [], newValues = [],
response, doc, title;
for (var row = 0, var len = urls.length; row < len; row++) {
if (urls[row] != '') {
response = UrlFetchApp.fetch(urls[row]);
doc = Xml.parse(response.getContentText(),true);
title = doc.html.head.title.getText();
newValues.push([title]);
titleList.push(title);
Logger.log(title);
} else newValues.push([]);
}
Logger.log('newValues ' + newValues);
Logger.log('titleList ' + titleList);
// SET NEW COLUMN VALUES ALL AT ONCE!
sheet.getRange("H3").offset(0, 0, newValues.length).setValues(newValues);
return titleList;
}
Ответ 2
для (var row = 0, var len = urls.length; row <len; row++) {
@Byran PI получает синтаксическую ошибку в этой строке? не могли бы вы мне помочь, пожалуйста?