Size: a a a

Чат | Google Таблицы и скрипты

2018 August 08

EN

Eugeny Namokonov in Чат | Google Таблицы и скрипты
Mike
Вопрос про регулярные выражения - если число есть то нет проблем -
скрипт его извлекает. Но если ни одного числа не доступно - он
возвращает ошибку и не исполняется. А есть желание чтобы он возвращал ноль.
Почитал в интернете про проблему - пишут про lastIndex и флаг g - но
как-то не получилось использовать.

function test(){
  //var result = GetStock("0P0000ZROQ") //TypeError: Не удается прочитать свойство "1" объекта null. (строка 18, файл test)
  var result = GetStock("0P00006PUS")  //работает
  Logger.log(result)
}


function GetStock(ISIN) {
  var url =
'http://www.morningstar.co.uk/uk/etf/snapshot/snapshot.aspx?id='+ISIN;
  var html = UrlFetchApp.fetch(url).getContentText();

var searchstring2 = '5 Years Annualised</td><td class="value number">';
  var index2 = html.search(searchstring2);
  if (index2 >= 0) {
    var pos2 = index2 + searchstring2.length
    var rate2 = html.substring(pos2, pos2 + 18);
    Logger.log(rate2)
    var regExp2 = new RegExp("((\\d+|\\d{1,3}(?:[.]\\d{5})).\\d+)");
    var rate2 = regExp2.exec(rate2)[1];
    rate2 = +rate2; //перевод в число
    return rate2
    }
  }
Привет, спасибо за донат!
источник

EN

Eugeny Namokonov in Чат | Google Таблицы и скрипты
Mike
Вопрос про регулярные выражения - если число есть то нет проблем -
скрипт его извлекает. Но если ни одного числа не доступно - он
возвращает ошибку и не исполняется. А есть желание чтобы он возвращал ноль.
Почитал в интернете про проблему - пишут про lastIndex и флаг g - но
как-то не получилось использовать.

function test(){
  //var result = GetStock("0P0000ZROQ") //TypeError: Не удается прочитать свойство "1" объекта null. (строка 18, файл test)
  var result = GetStock("0P00006PUS")  //работает
  Logger.log(result)
}


function GetStock(ISIN) {
  var url =
'http://www.morningstar.co.uk/uk/etf/snapshot/snapshot.aspx?id='+ISIN;
  var html = UrlFetchApp.fetch(url).getContentText();

var searchstring2 = '5 Years Annualised</td><td class="value number">';
  var index2 = html.search(searchstring2);
  if (index2 >= 0) {
    var pos2 = index2 + searchstring2.length
    var rate2 = html.substring(pos2, pos2 + 18);
    Logger.log(rate2)
    var regExp2 = new RegExp("((\\d+|\\d{1,3}(?:[.]\\d{5})).\\d+)");
    var rate2 = regExp2.exec(rate2)[1];
    rate2 = +rate2; //перевод в число
    return rate2
    }
  }
var rate2 = regExp2.exec(rate2)[1] - это нужно убрать
источник

EN

Eugeny Namokonov in Чат | Google Таблицы и скрипты
Александр Прозоров
Подскажите по функционалу Найти и заменить в таблицах.
Есть список например
Строка 50 нет. 10520
Строка 56 нет. 10523
Нужно убрать все кроме последнего номера. В excel ставил в поле найти "Строка *   нет." и заменяло на "пусто" и оставались только номера. Понимаю что можно с помощью ПРАВСИМВ, но хочется объяснить сотрудникам как это делать без формул.
Действительно в Excel так работает? Вообще * означает любое кол-во символов после (или до)
источник

EN

Eugeny Namokonov in Чат | Google Таблицы и скрипты
Eugeny Namokonov
var rate2 = regExp2.exec(rate2)[1] - это нужно убрать
После этого если ничего не будет найдено, то результат будет Null
источник

АП

Александр Прозоров... in Чат | Google Таблицы и скрипты
Eugeny Namokonov
Действительно в Excel так работает? Вообще * означает любое кол-во символов после (или до)
Да всегда так пользовались
источник

EN

Eugeny Namokonov in Чат | Google Таблицы и скрипты
Mike
Вопрос про регулярные выражения - если число есть то нет проблем -
скрипт его извлекает. Но если ни одного числа не доступно - он
возвращает ошибку и не исполняется. А есть желание чтобы он возвращал ноль.
Почитал в интернете про проблему - пишут про lastIndex и флаг g - но
как-то не получилось использовать.

function test(){
  //var result = GetStock("0P0000ZROQ") //TypeError: Не удается прочитать свойство "1" объекта null. (строка 18, файл test)
  var result = GetStock("0P00006PUS")  //работает
  Logger.log(result)
}


function GetStock(ISIN) {
  var url =
'http://www.morningstar.co.uk/uk/etf/snapshot/snapshot.aspx?id='+ISIN;
  var html = UrlFetchApp.fetch(url).getContentText();

var searchstring2 = '5 Years Annualised</td><td class="value number">';
  var index2 = html.search(searchstring2);
  if (index2 >= 0) {
    var pos2 = index2 + searchstring2.length
    var rate2 = html.substring(pos2, pos2 + 18);
    Logger.log(rate2)
    var regExp2 = new RegExp("((\\d+|\\d{1,3}(?:[.]\\d{5})).\\d+)");
    var rate2 = regExp2.exec(rate2)[1];
    rate2 = +rate2; //перевод в число
    return rate2
    }
  }
Если нужен именно второй элемент [1], то можно придумать проверку на Null


function MIKE(){
 var arr = ["adas1", "аваsdd", 23]
 var regExp2 = new RegExp("[0-9+]");
 
 for(x=0; x<arr.length; x++){
   var rate2 = regExp2.exec(arr[x]);
   if(!rate2){
     rate2=0;
     Logger.log(rate2);
   }else{
     Logger.log(rate2)}
 }
}
источник

EN

Eugeny Namokonov in Чат | Google Таблицы и скрипты
источник

EN

Eugeny Namokonov in Чат | Google Таблицы и скрипты
   if(!rate2){ - если rate2 не существует (null)
источник

EN

Eugeny Namokonov in Чат | Google Таблицы и скрипты
О, вот эта запись, наверное, будет проще

function MIKE(){
 var arr = ["adas1", "аваsdd", 23]
 var regExp2 = new RegExp("[0-9+]");
 
 for(x=0; x<arr.length; x++){
   var rate2 = regExp2.exec(arr[x]);
   !rate2 ? rate2=0: rate2
   Logger.log(rate2)
 }
}
источник

M

Mike in Чат | Google Таблицы и скрипты
Eugeny Namokonov
   if(!rate2){ - если rate2 не существует (null)
Спасибо!
источник

EN

Eugeny Namokonov in Чат | Google Таблицы и скрипты
Что-то у нас Табличный чат скатывается куда-то в скрипты в последнее время )
источник

EN

Eugeny Namokonov in Чат | Google Таблицы и скрипты
Александр Прозоров
Подскажите по функционалу Найти и заменить в таблицах.
Есть список например
Строка 50 нет. 10520
Строка 56 нет. 10523
Нужно убрать все кроме последнего номера. В excel ставил в поле найти "Строка *   нет." и заменяло на "пусто" и оставались только номера. Понимаю что можно с помощью ПРАВСИМВ, но хочется объяснить сотрудникам как это делать без формул.
Можно рег выражениями
источник

EN

Eugeny Namokonov in Чат | Google Таблицы и скрипты
источник

АП

Александр Прозоров... in Чат | Google Таблицы и скрипты
Да но не пойму какой аналог * "любого значения" в регулярке
источник

EN

Eugeny Namokonov in Чат | Google Таблицы и скрипты
Ща напишем
источник

EN

Eugeny Namokonov in Чат | Google Таблицы и скрипты
источник

EN

Eugeny Namokonov in Чат | Google Таблицы и скрипты
источник

Т

Тимур in Чат | Google Таблицы и скрипты
Всем привет! Есть вопрос.

function onEdit(e){
var range = e.range
if(range.getSheet().getName()=="Ответы на форму (1)" && range.getColumn()==2 ){range.offset(0,0).setValue(new Date()) }
}

Как модифицировать скрипт так, чтобы при изменении любой ячейки в строке он записывал дату во второй столбец этой строки?
источник

Т

Тимур in Чат | Google Таблицы и скрипты
Уже неделю бьюсь, программирование - это то, что заставляет меня чувствовать себя тупым :(
источник

EN

Eugeny Namokonov in Чат | Google Таблицы и скрипты
Тимур
Уже неделю бьюсь, программирование - это то, что заставляет меня чувствовать себя тупым :(
Привет, а в каких вещах специализируетесь? Что заставляет ощущать себя вумным?
источник