2016-12-15 2 views
0

Я пытаюсь установить значение для ячейки, но в нем отображается ошибка «Range not found».Как установить значение для диапазона, называемого переменной?

Ниже приводится код:

function setpush(pushes) { 
var sheet2 = SreadsheetApp.getActiveSpreadsheet().getSheetByName("Alerts").getRange(pushes), 
    pushcell = sheet2.getCell(1,1).setValue("PUSH_SENT"); 
} 

На самом деле, я пытаюсь создать пользовательскую функцию для Google Spreadsheet. Переменная push объявляется в самом начале кода.

Ниже приведен полный код, в случае если ошибка вызвана структурой кода.

// Function that you need to call with valid parameters to check when to notify the user and then if all conditions are met then notify the user 
function notify(boolean1, pushes, title, body, url) { 
    if(boolean1 == "Yes" && pushes != "PUSH_SENT") { //// prevent sending duplicate pushes 
    sendNotification(pushes, title, body, url); 
    return "Fired"; 
    } else { 
    return 'Not Fired'; 
    } 
} 

///// 

// Function that sends notification to an email id 
function sendNotification(pushes, title, body, url) { 
// Check if edit was made in sendNotificationBoolean, If it was changed then proceed 
    // Get Range of data that we need to proceed from active sheet 
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("basic").getRange('B19'), 
//  Get email id from range 
     email = sheet.getCell(1, 1).getValue(); 

     // Run a loop and perform appropriate checks to make sure email id is valid and sendNotification boolean is true/yes 
    if(email && email.indexOf("@") != -1) { 

/* Variable that stores Payload 
* email: User email 
* type: Type of notification, It can be Note, Link or File. Note suits this. 
* body: Body of notification, Any message that you want to send goes here. 
* title: Title of notification 
*/ 

    var notificationData = { 
     "email": email, 
     "type": "link", 
     "body": body, 
     "title": title, 
     "url": url 
    } 

// Important data that has to be sent with every request 
// Change access token to change the user from whom notification'll be sent 
    var options = { 
     'method': 'post', 
     'contentType': 'application/json', 
     'headers': { 
     'access-token': 'o.13zCbw5nkk9f3VubcJBhZPG2NpCZjTat' 
     }, 
     'payload': JSON.stringify(notificationData)  
    }; 
// Perform a POST request along with options and payload 
    UrlFetchApp.fetch("https://api.pushbullet.com/v2/pushes", options); 
    {setpush(pushes)} 
    } 
} 

///// Set a value for column N 

function setpush(pushes) { 
var sheet2 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Alerts").getRange(pushes), 
    pushcell = sheet2.getCell(1,1).setValue("PUSH_SENT"); 
} 
+0

Одним из очевидных элементов является то, что вы устанавливаете переменную «лист» в диапазон в вашей функции sendNotification, а затем пытаетесь получить диапазон из диапазона. Измените строку на 'var sheet = SpreadsheetApp.getActiveSpreadsheet(). GetSheetByName (« basic »);' удалив '.getRange ('B19'), и положив точку с запятой в конец. Если вам нужно использовать данные в ячейке B19., Вы можете добавить следующую строку: 'var cellB19_range = sheet.getRange ('B19');' или 'var cellB19_value = sheet.getRange ('B19'). GetValue() ; '(untested) Затем вы можете использовать' var email = sheet.getCell (1, 1) .getValue(); '(я только добавил var в начало) –

+0

Я не пытаюсь получить значение из какой-либо конкретной ячейки. Вы ошибаетесь в коде, о котором я говорю. Я говорю о функции «setpush (push)», которая находится в конце скрипта. Прокрутите вниз немного. в более крупном коде в потоке. –

+0

Я не пытаюсь получить значение из какой-либо конкретной ячейки. Вы ошибаетесь в коде, о котором я говорю. Я говорю о функции setpush (push), которая находится в конце скрипта. Прокрутите вниз немного. в более крупном коде в потоке. Тем не менее, я также внес изменения в соответствии с вашими комментариями. Благодарю. –

ответ

0

Вы, кажется, дает метод getRange() одну строку в качестве единственного параметра в вашей setpush() функции. Единственный способ, которым этот единственный параметр является приемлемым, - это если строка находится в нотации A1, например. getRange('Alerts!A1:D4') и/или getRange('D4').

Для устранения неполадок можно Logger.log значение pushes каждый раз, когда вы называете setpush() или выполнить простую функцию тестирования, например, так:

function test() { 
    setpush('A1'); 
    setpush('not A1'); 
} 

Если ожидаемый результат будет в ячейке A1 в PUSH_SENT на вашем электронная таблица, а затем Диапазон не найден Ошибка, с которой вы столкнулись.

Для получения дополнительной информации см. documentation for getRange().

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