• Почему не переносится текст (string) при query + importrange?

    oshliaer
    @oshliaer Куратор тега Google Sheets
    Google Products Expert
    Не занимайтесь этой ерундой. Получите данные на отдельный лист импортом и работайте как с нормальным листом. Вот эти решения FILTER(IMPORTRANGE, QUERY(IMPORTRANGE никак не улучшают читаемость и гибкость формул.

    Добавьте на Лист формулу IMPORTRANGE, а в целевой ячейке укажите

    =FILTER(Лист!A:Z;E:E="Product name")

    А если у кого-то в Таблице увидите обернутые во что-то IMPORTRANGE, смело вешайте ярлык "бестолочь".
    Ответ написан
    5 комментариев
  • Как заставить работать скрипт дистанционно?

    oshliaer
    @oshliaer Куратор тега Google Apps Script
    Google Products Expert
    Рассмотрите две возможные проблемы:

    Во-первых. Прежде чем отправлять запрос, ваше приложение должно авторизоваться через и получить токен.
    This method requires authorization with an OAuth 2.0 token that includes at least one of the scopes listed in the Authorization section; script projects that do not require authorization cannot be executed through this API.


    Во-вторых: У вас 404 ошибка. Ресурс не найден. Проверьте коррекность адреса
    POST https://script.googleapis.com/v1/scripts/{scriptId}:run

    В данном случае {scriptId} - это уникальный номер самого скрипта, который находится в меню Файл - Свойства проекта - Ключ проекта

    Если вы не хотите авторизовываться, но вам очень надо отправить POST, попробуйте
    function doPost(e) {
      return ContentService.createTextOutput(JSON.stringify({status: 'ok'}))
        .setMimeType(ContentService.MimeType.JSON);
    }


    Но, тогда вам необходимо опубликовать скрипт как веб-приложение и разрешить доступ на выполнение для всех, даже анонимных пользователей.

    Добавлено

    Еще одной частой проблемой является необходимость вручную добавить в файл манифеста области видимости для скрипта, чтобы он мог иметь доступ к Script API.
    Ответ написан
    1 комментарий
  • Как связать или внедрить данные в Google Docs?

    oshliaer
    @oshliaer Куратор тега Google Sheets
    Google Products Expert
    Технически это возможно с большими оговорками.

    Во-первых, не сравнивайте сервисы Google с настольным приложением, это позволит более трезво взглянуть на вещи.
    Во-вторых, встроенных средств не существует. И, если еще раз прочитать "во-первых", они и не нужны.
    В-третьих, можно извернуться и программно добавлять значения в Документ, но это довольно хлопотно. В конце-концов в Google Apps Script есть некий класс Class Range, который, все же, пока болтается без дела.

    Это все, что можно сказать по существу на данный момент.
    Обычно решают вопрос созданием шаблонов и генерацией на их основе новых Документов, а не преобразованием текущего.

    Обновление от 2019-01-23
    Существует возможность "привязать" Таблицу к Документу. Необходимо выделить диапазон Таблицы, скопировать в буфер и вставить в Документ. Пример https://vk.com/wall-174824632_8
    Ответ написан
    Комментировать
  • Как получить ссылку на изображение из Google диска по id?

    oshliaer
    @oshliaer Куратор тега Google Apps Script
    Google Products Expert
    Здравствуйте.

    Берут сомнения меня, что CAJA, даже в режиме IFRAME, предоставляет нам DOM-документ. Все же, с большой вероятностью, это некий фарш LIKE_DOM = CAJA(DOM);

    Поэтому инструкция, чтобы в нее не передавали, не будет "responsive":
    document.getElementByTagName('img').src = data.image;

    Но, это же DOM, в конце концов! Создаем элемент, вместо изменения атрибута:
    index.html
    <div>
    	<input type="button" onclick="showImage()" value="Click Me!" />
    	<div id="app"></div>
    </div>
    <script>
    	function showImage() {
    		google.script.run.withSuccessHandler(doStuff).withFailureHandler(function serverFailureHandler(e) {
    			console.log(JSON.stringify(e))
    		}).getImageId();
    	};
    	function doStuff(id) {
    		var img = document.createElement('img');
    		img.src = 'https://drive.google.com/uc?export=download&id=' + id;
    		document.getElementById('app').appendChild(img);
    	};
    </script>

    Code.gs
    function doGet(e){
      return HtmlService.createHtmlOutputFromFile('index');
    }
    function getImageId(){
      return '0BzStSAirQJ2oREZGYnM5MjBUZTQ';
    }

    Заметьте, нет никакой необходимости вызывать DriveApp. Он вам понадобится, только если изображение будет не в общем доступе. Тогда вам придется брать Blob, кодировать его в base64 и передавать слепок. Размер слепка не может превышать 10Мб.

    И еще я заметил у вас
    <?!= include('JavaScript'); ?>
    Не забудьте, что шаблоны не исполняют асинхронного кода Load data asynchronously, not in templates, поэтому, создавая нечто объемное, постарайтесь выдать HTML как можно быстрее:
    function doGet(e){
      return HtmlService.createHtmlOutputFromFile('index');
    }
    Ответ написан
    Комментировать
  • Как настроить взаимодействие Google Apps и Яндекс.Маркет API?

    oshliaer
    @oshliaer Куратор тега Google Apps Script
    Google Products Expert
    Основное требование от Яндекс для доступа к API Маркета - это наличие "Партнерского API"- или
    "Контентного API"- ключа доступа в виде oauth_login. Этакий ключ-в-ключе. Рассуждения на тему необходимости, полагаю, неуместны.

    API Маркета
    • Партнерский API Для магазинов, которые размещают товары на Яндекс.Маркете, а также для рекламных агентств.
    • Контентный API Для разработчиков, которым нужны данные о товарах с Маркета: описания моделей, фотографии, отзывы.

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

    Опишу вкратце, как использовать API Маркет в Google Apps Script:
    1. Вы должны быть уверены, что у вас есть ваш oauth_login (см. выше)
    2. Пройдите Авторизацию. Для этого ваше приложение должно использовать следующие из возможностей Google Apps Script: HtmlService как опубликованное приложение, HtmlService как возврат StateTokenBuilder, если вы создаете Add-On. Для получения токена и отправки запросов POST (или запросов GET от лица приложения) используйте URLFetch
    3. Следуйте инструкциям Яндекс по Ограничениям для запросов

    Могу добавить только то, что описание API Яндекс и ВКонтакте на данный момент, как мне кажется, являются самыми внятными и, вероятно, прямолинейными. От чего вероятность возникновения ошибок минимальна.

    С уважением.
    Ответ написан
    Комментировать
  • Подскажите простой сервис учета финансов фрилансера?

    foxmuldercp
    @foxmuldercp
    Системный администратор, программист, фотограф
    Гугль докс елементарно выгружается в ексель, а дальше отчетами можно обложиться — у меня сейчас домашняя бухгалтерия так
    Ответ написан
    Комментировать
  • Нужна простая CMS/ERP для ведения списка клиентов и контроль редактирований. (подробности под катом)?

    opium
    @opium
    Просто люблю качественно работать
    По мойму вы сами отвергаете наилучший вариант гуглдокс, там офигенно класная версионность, + по мойму можно посмотреть кто и чего напортачил, просто офигенская паралельная работа с документами, мне даже кажется я чуть ли не кончил когда в первый раз попробовал его в деле.
    А так вам проще самому наваять скриптик за полчаса на коленке.
    Ответ написан
    3 комментария