Ответы пользователя по тегу Google Sheets
  • Как автоматизировать такой процесс?

    Можно сделать средствами самого Excel, но придется писать макрос в Excel и скрипт в google.
    1- Зайти, залогиниться, скачать файл
    2- Прочитать файл
    3- отправить в гугл
    4- скрипт google получает данные и раскладывает в нужные таблицы

    Если доступ открытый, т.е. логиниться не надо, то можно обойтись и без Excel. Напрямую из гугл скрипта скачивать данные и разбирать.
    Ответ написан
    6 комментариев
  • Как автоматически изменить некорректные поля на числа?

    ну или макросом
    Код надо вставить в новый модуль
    Public Function SanitData(ByRef rng As Range) As Double
       Dim data As String
       Dim ret As Double
       
       data = SanitizeNumbers(CStr(rng.Value))
       
       SanitData = IIf(Len(data) > 0, CDbl(data), 0)
    End Function
    
    Private Function SanitizeNumbers(ByVal data As String) As String
        Dim pos As Long
        Dim char As Long
    
        data = Replace(data, ".", ",")
        pos = 1
        Do While pos <= Len(data)
            char = Asc(mid$(data, pos, 1))
            If Not (Chr(char) Like "[0-9,]") Then
                data = Replace(data, Chr(char), "")
                pos = pos - 1
            End If
            pos = pos + 1
        Loop
        SanitizeNumbers = data
    End Function


    Вызов макроса на фото
    5cb5b90a54c1c300558303.jpeg
    Ответ написан
  • Как в Wordpress ловить UTM-метки и отдавать всё в таблицы Google?

    насчет отлова меток не знаю, а вот в google таблице отправлять данные это просто
    Принцип такой: Собираете данные, делаете POST запрос в google. Этот запрос отлавливает Ваш скрипт и разбирает данные по ячейкам таблицы.

    для этого
    В google таблице заходите в "Инструменты->Редактор скриптов" и пишите код приема
    function doPost(e) {
        
      if(typeof e !== 'undefined')
        var par = JSON.parse(e.postData.contents);
    
      PutDataInSheet(par);
      return ContentService.createTextOutput("ok");  
    }
    
    
    function PutDataInSheet(e) {
      // в кавычках ключ вашей таблицы, его взять в адресной строке, когда вы находитесь в вашей таблице
      var wbk = SpreadsheetApp.openById("1Q3yDiWwOMosybBho_attZYW6roT4SOP4-oHPDARzA_s");  // таблица - февраль 2018
     
      // далее идет разбор данных и раскладка по ячейкам
      var wks = wbk.getSheetByName("сайт");
      var row = wks.getLastRow()+1;
      var d = new Date(); 
      wks.getRange("A"+row).setValue(e['updated_at']);
      wks.getRange("B"+row).setValue(e['id']);
      wks.getRange("C"+row).setValue(e['billing_address']['last_name'] + ' ' + e['billing_address']['first_name']);
      // Убираем все символы кроме цифр из номера телефона
      var phn = e['billing_address']['phone'];
      phn = phn.replace(/[^\d]/g, "");  
      wks.getRange("D"+row).setValue(phn);
      wks.getRange("E"+row).setValue(e['billing_address']['address_1']);
      wks.getRange("G"+row).setValue(parseFloat(e['subtotal']));
      for (i in e['line_items']) {
        var item = e['line_items'][i];
        wks.getRange("J"+row).setValue(item['sku']);
        wks.getRange("K"+row).setValue(item['quantity']);
        wks.getRange("L"+row).setValue(parseFloat(item['subtotal']));
        wks.getRange('A' + row + ':L' + row).setBackground('#d9ead3');
        row ++;
      }
    }


    Сохраняете проект и выбираете "Опубликовать->Развернуть как веб приложение". Получите ссылку для доступа к приложению. Ее надо скопировать и вставить в серверный код

    Далее надо написать серверный код для отправки

    /**
         * выполняет отправку заказа в google таблицы 
         */
        public static function SendOdrerToGoogleSheet($order_id){
            // собираем данные в массив
            $order = self::getOrderDetailById($order_id);
    
            
            // ссылка на WEB приложение
    		$url = 'https://script.google.com/macros/s/AKfycby_0wdvKJuWbRZEdJUY1xeRWXmUiRTOuX584HhAxtde4y8ZKJ4/exec';
                        
            $ch = curl_init();
            curl_setopt($ch, CURLOPT_URL, $url);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
            curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);   // переходит по редиректам
            curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.71 Safari/534.24");
            curl_setopt($ch, CURLOPT_POST, 1); // Do a regular HTTP POST
            curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($order)); // Set POST data
    
            $response = curl_exec($ch);
            curl_close($ch);
        }


    Ну вот и все. Код взят с рабочего инструмента.

    Единственное что я так и не разобрался как настроить CURL на асинхронную передачу. Ну что бы не ждал ответа. Данные то отправляем в одностороннем порядке, зачем тормозить сервер ожиданием
    Ответ написан
    Комментировать
  • Как написать макрос, который активирует другой макрос, в зависимости от условия?

    Макрос это процедура
    Вызывается из кода как обычно
    sub MyGlavniyMacros()
       select case ActiveSheet.range("A1").value
          case 1: call MySlaveMacros1()
          case 2: call MySlaveMacros2()
          case else : call MySlaveMacrosDefault()
       end select
    end sub

    последний case else - означает выполнить для всех вариантов не прописанных выше
    Ответ написан
    4 комментария
  • Как сделать обновление даты в Google Таблицы?

    Надо написать скрипт который при каждом заходе в таблицу будет проверять и менять дату
    Ответ написан
    2 комментария
  • Как удалить повторные строчки в Excel?

    Сделать бэкап!
    1 - Скопировать оба листа в одну книгу
    2 - отсортировать оба списка по возрастанию по полю с е-майл-ами
    3 - Использовать функцию ВПР для большого списка, искать в малом
    4 - включить фильтрацию и отфильтровать все найденные значения
    5 - Удалить все отфильтрованные
    Ответ написан
    Комментировать