Можно ли использовать функции Google Spreadsheet в Google App Script?

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

Я пытаюсь написать сценарий для электронной таблицы Google, который находит определенные исторические цены на акции. Я обнаружил, что служба FinanceApp в скриптах приложений Google устарела и, по-видимому, заменена функцией GOOGLEFINANCE () в таблицах Google. Однако он возвращает массив, когда мне нужна только одна ячейка, а массив портит работу.

Поэтому я хотел бы написать короткий скрипт, который вызывает функцию электронной таблицы GOOGLEFINANCE () и находит только 1 часть необходимой мне информации из массива, возвращаемого GOOGLEFINANCE (). Однако я не могу найти способ получить доступ к функциям электронных таблиц (СУММ, ВПР, GOOGLEFINANCE и т. Д.) В скрипте.

Есть ли способ получить доступ к этим функциям в скрипте? Или, возможно, есть новая служба, которая заменяет устаревшую службу FinanceApp?

Большое спасибо за любую помощь!


person marko    schedule 10.10.2014    source источник
comment
нет, stackoverflow.com/a/25473705/1480465. вы должны воссоздать их.   -  person Bryan P    schedule 10.10.2014
comment
возможный дубликат Использовать стандартные функции электронных таблиц в Scrips?   -  person KyleMit    schedule 13.03.2015


Ответы (4)


Встроенные функции электронных таблиц не поддерживаются в Google Apps Script.

В конечном итоге вы можете использовать несколько громоздкий обходной путь, прочитав значение ячейки, в которой вы пишете формулу (используя сценарий как для записи, так и для чтения), но это будет менее практично и / или быстро.

person Serge insas    schedule 10.10.2014

Вы можете попробовать это:

var trick = SpreadsheetApp.getActiveSheet().getRange('D2').setValue('=GOOGLEFINANCE("GOOG")').getValue();
person GuestGuy    schedule 06.10.2019
comment
Было бы действительно полезно, если бы вы могли объяснить свой ответ. - person Ahmad Maleki; 06.10.2019

Есть один возможный способ - использовать .setFormula (). Эта функция ведет себя как .setValue () и может использоваться следующим образом:

var ss = SpreadsheetApp.getActiveSpreadsheet();
var mySheet = ss.getSheets()[0]

//Code Below selects the first cell in range column A and B
var thisCell = mySheet.getRange('A:B').getCell(1,1); 

thisCell.setFormula('=SUM(A2:A4)');

Все формулы, которые вы пишете в этой функции, обрабатываются как строки, которые должны иметь 'или "во входных данных .setFormula ().

person Zae Vilches    schedule 25.05.2018

Вы можете попробовать функцию ИНДЕКС в сочетании с GOOGLEFINANCE-

Для справки,

= GOOGLEFINANCE (MSFT, ЦЕНА, 21.01.21)

Возвращает массив:

    Date    Close
    1/4/2021    217.69

Можно добавить функцию ИНДЕКС, чтобы выбрать определенные элементы из массива, используя координаты строки, столбца массива.

= ИНДЕКС (GOOGLEFINANCE (MSFT, ЦЕНА, 21.01.21); 2,2)

Это возвращает только данные в строке 2, столбце 2 - 217,69

person tothemax    schedule 03.02.2021