#api #google-apps-script #google-sheets
Вопрос:
Мне нужна кликабельная кнопка в моем листе для моих пользователей на мобильных устройствах.
Я принял помощь от https://medium.com/macadamscripts/create-button-in-google-sheets-mobile-2979579025ef
Я сделал выпадающее меню в столбце A с проверкой «Call_Customer» или «Call_Alt_No». Пользователям разрешено редактировать только столбец A.
и сделал следующие функции
//
//
function on_Edit(e) {
//if (e.range.getA1Notation() == 'A1') {
if (/^w $/.test(e.value)) {
eval(e.value)();
e.range.clear();
//e.range.setValue("Calling");
}
//}
}
//
//
function Call_Customer(){
var ss=SpreadsheetApp.getActive();
var sht=ss.getActiveSheet()
var cr=sht.getActiveCell().getRow();
var cu=sht.getRange("K" cr).getValue();
var ag=sht.getRange("J" cr).getValue();
const url = 'https://api.servetel.in/v1/click_to_call'
const options = {
method: 'POST',
headers: {
Accept: 'application/json',
Authorization: 'xxx',
'Content-Type': 'application/json'
},
payload: JSON.stringify({agent_number: ag, destination_number: cu})
}
try {
const res = UrlFetchApp.fetch(url, options)
Logger.log(JSON.parse(res));
//ss.toast(JSON.parse(res));
}
catch (e) {
Logger.log('error' e);
//ss.toast('error' e);
}
}
//
//
function Call_Alt_No(){
var ss=SpreadsheetApp.getActive();
var sht=ss.getActiveSheet()
var cr=sht.getActiveCell().getRow();
var cu=sht.getRange("I" cr).getValue();
var ag=sht.getRange("J" cr).getValue();
const url = 'https://api.servetel.in/v1/click_to_call'
const options = {
method: 'POST',
headers: {
Accept: 'application/json',
Authorization: 'xxxx',
'Content-Type': 'application/json'
},
payload: JSON.stringify({agent_number: ag, destination_number: cu})
}
try {
const res = UrlFetchApp.fetch(url, options)
//console.log(JSON.parse(res))
//Browser.msgBox("Call Started");
}
catch (e) {
//console.error('error' e);
//Browser.msgBox("Call failed");
}
}
Я сделал устанавливаемый триггер, так как простой триггер не мог вызвать внешнюю службу.
Функция Call_Customer хорошо работает на моем мобильном телефоне — я его владелец. Но это выдает ошибку для других редакторов листа на их мобильном телефоне (ошибка доступна в журнале триггеров).
Ошибка типа: eval(…) не является функцией в on_Edit(Код:33:20)
Есть ли какие-либо ограничения для редакторов на использование eval? Должны ли они давать какое-либо разрешение?
Комментарии:
1. Используют ли другие пользователи ваш код или делают его копию? Имейте в виду, что eval не поддерживается в старой среде выполнения (Rhino), поэтому он не будет работать для пользователей, у которых не включена версия v8.