Куна - хорошее место, продолжайте им пользоваться! Бот следит за некоторыми тегами тут https://t.me/googleappsscriptrc. Интересуют Таблицы и Google Apps Script? Нам по пути тут https://contributor.pw/contacts
Контакты

Достижения

Все достижения (4)

Наибольший вклад в теги

Все теги (48)

Лучшие ответы пользователя

Все ответы (353)
  • Как формулой вернуть значение пустой ячейки?

    oshliaer
    @oshliaer Куратор тега Google Sheets
    Google Products Expert
    Мне больше всего нравится ссылка на пустой диапазон. Просто создайте именованный диапазон, в моем случае это BLANK, который ссылается на какую-то всегда пустую ячейку. Далее, например, в B1

    =IF(A1=1;BLANK;A1)

    Если в C1 добавить =ISBLANK(B1), то вернет TRUE

    601a2b7b23fc8863726221.png
    Ответ написан
  • Скрипт Google Docs + Яндекс.Маркет API?

    oshliaer
    @oshliaer
    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 Яндекс и ВКонтакте на данный момент, как мне кажется, являются самыми внятными и, вероятно, прямолинейными. От чего вероятность возникновения ошибок минимальна.

    С уважением.
    Ответ написан
  • Как сгенерить md5 строку на Google Script?

    oshliaer
    @oshliaer
    Google Products Expert
    Здравствуйте.

    Мне кажется, что у вас неполные представления о методах Google Apps Script, алгоритмах хэширования и системах исчисления.

    Во-первых, computeDigest возвращает массив Byte[], что он и должен делать.
    Во-вторых, вам просто его надо "преобразовать в 16-ричную хэш строку", как сказано выше.

    Попробуйте сделать так:

    function test(){
      Logger.log('56'.MD5());
    }
    String.prototype.MD5 = function(charset, toByte) {
      charset = charset || Utilities.Charset.UTF_8;
      var digest = Utilities.computeDigest(Utilities.DigestAlgorithm.MD5, this, charset);
      if(toByte) return digest;
      var __ = '';
      for (i = 0; i < digest.length; i++) {
        var byte = digest[i];
        if (byte < 0) byte += 256;
        var bStr = byte.toString(16);
        if (bStr.length == 1) bStr = '0' + bStr;
        __ += bStr;
      }
      return __;
    }
    Ответ написан
  • Скрипты в Google Sheets, как начать с нуля?

    oshliaer
    @oshliaer Куратор тега Google Sheets
    Google Products Expert
    Ответ написан
  • Как получить ссылку на изображение из Google диска по id?

    oshliaer
    @oshliaer
    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');
    }
    Ответ написан