2016-03-14 2 views
0

Оглядывался повсюду для этого без реальной удачи.Вызов функции в скрипте Google Apps

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

Функция, которую я хочу вызвать, называется «getDates», которая имеет переменную 'year' в нём. Однако, когда я вызываю функцию, сценарий переходит к вызову 'year', он возвращает undefined.

Это getDates Функция:

function getDates { 
var startDate = new Date(sheet.getRange("B1").getValue()); 
var year = startDate.getFullYear();} 

И я ищу, чтобы вызвать эту функцию в следующем:

function one { 

     getDates(); 

      var url = "https://(hidden url)" + year; 

     UrlFetchApp.fetch(url); 
     var dataAll = JSON.parse(response.getContentText()); // 
    var dataSet = dataAll; 

    var rows = [], 
     data; 


    for (i = 0; i < Object.keys(dataSet).length; i++) { data = dataSet[Object.keys(dataSet)[i]]; rows.push([data.XXX]); } 


    dataRange = sheet.getRange(7, 2, rows.length, 1); 
    dataRange.setValues(rows); 
    } 
+0

Как насчет того, чтобы опубликовать свой код? – matcheek

+0

Отредактировано и сделано – JGA

ответ

2

скрипты Google Apps и старые версии JS общее пользование функциональных обзорный так любое значение, объявленное внутри функции, недоступно в его содержащей среде, если оно не возвращается.

У вашей функции нет оператора возврата, поэтому он неявно возвращается неопределенно. В качестве побочных эффектов он объявляет две переменные, а затем мусор собирает их, когда функция выполняется.

Вы хотите добавить строку в getDates() функции return year; и назначить, что переменный в пределах one()

Единственный способ доступа к переменным внутри функции после того, как функция окончилась должны иметь эту функцию (getDates()) возвращение функция. Затем эта функция будет содержать среду содержащей функции и может получить доступ к ее переменным даже после завершения этой функции. Это называется closure, но не очень полезно в вашем случае.

Смежные вопросы