Google лист : передача значения/данных из ячейки в качестве параметра в функции Google script

#google-sheets

Вопрос:

Я добавляю сценарий с помощью инструментов/редактора сценариев. Я добавляю свою простую всплывающую функцию :

 function test(){
  Browser.msgBox('This is test')
}
 

Затем в Google листе я добавляю изображение в качестве кнопки и прикрепляю скрипт «тест».

Это работает нормально, но я хочу передать значение из ячейки. Как я могу это сделать?

Например, я изменяю функцию следующим образом :

 function test(val){
  Browser.msgBox('This is test. Value is ' val)
}
 

если я хочу передать значение из ячейки B4 —> > test(B4) . Как это сделать правильно ? мне не разрешается включать параметр B4 при назначении скрипта изображению/кнопке. В нем будет написано «сценарий не найден».

Спасибо

Ответ №1:

Решение Джоны правильное, но я хочу кое — что к нему добавить. Я рекомендую это усовершенствование, чтобы время от времени не изменять свой сценарий, когда вы хотите передать другую ячейку в качестве параметра.

Подход:

  • Сохраните обозначения ячеек, которые вы хотите передать в конкретную ячейку. (например, «B4» в A1)
  • Получите значение A1 и получите доступ к значению этой записи ячейки.

Код:

 function test() {
  sheet = SpreadsheetApp.getActiveSheet();
  // cell holds the range you want printed
  cell = sheet.getRange("A1").getValue();
  // value now holds the value of the range we got from the cell
  value = sheet.getRange(cell).getValue();
  Browser.msgBox(value);
}
 

Лист:

лист

B4:

b4

B5:

b5

Примечание:

  • Каждый раз, когда вы меняете значение A1, он будет выводить значение этой ячейки.
  • Он не будет вести себя должным образом, когда вы напишете недопустимый диапазон в A1. ( Exception: Range not found )

Ответ №2:

Правильно, вы можете указать параметр при вызове пользовательской функции в виде формулы на листе, но не как прикрепленный к сценарию при нажатии кнопки. Мы даже не включаем скобки, когда назначаем сценарий.

Если функция customer всегда хочет использовать значение B4, вы можете изменить свой сценарий, чтобы получить значение из этой ячейки.

 var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var val = sheet.getRange("B4");