Как запустить функцию?



  • В скрипте google sheets есть функция, которая удаляет первую строчку таблицы:

    function deleteFirstRow(){
      var spreadSheet = SpreadsheetApp.openById("1jHYiefs8fJPK3jvs02kmvULJHIUytgbf6sdf5w0fa37hIU");
      var sheet = spreadSheet.getSheetByName("Sheet1")
      sheet.deleteRow(1);
    }
    

    Вопрос: Как ее запустить из БАС?


  • administrators

    @senerg А зачем её запускать в BAS? Её надо в скриптах google sheets выставлять



  • @senerg
    А как эту функцию вы запускаете без БАС?



  • @xclsv, запускаю в скриптах google sheets, там работает.

    @fox said in Как запустить функцию?:

    А зачем её запускать в BAS?

    Не в BAS, а из BAS как ее вызвать? В скриптах google sheets она уже выставлена


  • administrators

    @senerg

    Не в BAS, а из BAS как ее вызвать? В скриптах google sheets она уже выставлена

    Прописываете в обработчике запрос, и в BAS отправляете get\post-запрос.


    Например самый простой вариант, при get-запросе на страницу, будет удалятся первая строка таблицы:

    function doGet(e){
      var spreadSheet = SpreadsheetApp.openById("1jHYiefs8fJPK3jvs02kmvULJHIUytgbf6sdf5w0fa37hIU");
      var sheet = spreadSheet.getSheetByName("Sheet1")
      sheet.deleteRow(1);
    }
    


  • @fox Так а как в гет запросе указать название функции, которую я хочу запустить? Если в скриптах google sheets есть несколько функций как выбрать из них ту, которую я хочу запустить?


  • administrators

    @senerg Можно через передаваемые параметры, вы же сами пишете обрабочтик. Что нибудь типа этого:

    function deleteFirstRow(){
      var spreadSheet = SpreadsheetApp.openById("1jHYiefs8fJPK3jvs02kmvULJHIUytgbf6sdf5w0fa37hIU");
      var sheet = spreadSheet.getSheetByName("Sheet1")
      sheet.deleteRow(1);
    }
    
    function doGet(e){
    if (e.parameter.p1 == 1) deleteFirstRow();
    }
    

    А в get-запросе указываете параметр p1 и значение 1.



  • @fox, понятно, спасибо. Думал можно каким-то образом просто функцию передать через гет или пост. Но похоже что так нельзя сделать.


  • administrators

    @senerg

    Думал можно каким-то образом просто функцию передать через гет или пост. Но похоже что так нельзя сделать.

    Теоретически можно передать текст нужной функции через значение параметра post-запроса, а в обработчике её запустить через eval(), но это чистой воды троянЪ :D



  • @fox Опять на темную сторону агитируешь? ;-)
    alt text