Size: a a a

Чат | Google Таблицы и скрипты

2018 November 19

P

Pavel in Чат | Google Таблицы и скрипты
Спасибо)
источник

EN

Eugeny Namokonov in Чат | Google Таблицы и скрипты
Дмитрий
<!DOCTYPE html>
<html>
<head>
 <link rel="stylesheet" href="https://ssl.gstatic.com/docs/script/css/add-ons.css">
 <script type="text/javascript">
   var DIALOG_DIMENSIONS = {
       width: 600,
       height: 425
   };
   var pickerApiLoaded = false;

   function onApiLoad() {
       gapi.load('picker', {
           'callback': function() {
               pickerApiLoaded = true;
           }
       });
       google.script.run.withSuccessHandler(createPicker)
           .withFailureHandler(showError).getOAuthToken();
   }

   function createPicker(token) {

       if (pickerApiLoaded && token) {

           var docsView = new google.picker.DocsView()
               .setIncludeFolders(false)
               .setMimeTypes('application/vnd.google-apps.folder')
               .setSelectFolderEnabled(true);
               
           var picker = new google.picker.PickerBuilder()
               .addView(docsView)
               .enableFeature(google.picker.Feature.NAV_HIDDEN)
               .enableFeature(google.picker.Feature.MINE_ONLY)
               .hideTitleBar()
               .setSize(DIALOG_DIMENSIONS.width - 2, DIALOG_DIMENSIONS.height - 2)
               .setOAuthToken(token)
               .setCallback(pickerCallback)
               //.setOwnedByMe(true)
               .setOrigin('https://docs.google.com/работа/ксперименты/_макеты')
               .build();

           picker.setVisible(true);

       } else {
           showError('Unable to load the file picker.');
       }
   }

   /**
    * A callback function that extracts the chosen document's metadata from the
    * response object. For details on the response object, see
    * https://developers.google.com/picker/docs/result
    *
    * @param {object} data The response object.
    */
   function pickerCallback(data) {
       var action = data[google.picker.Response.ACTION];
       if (action == google.picker.Action.PICKED) {
           var doc = data[google.picker.Response.DOCUMENTS][0];
           var id = doc[google.picker.Document.ID];
           // Show the ID of the Google Drive folder
           document.getElementById('result').innerHTML = id;
       } else if (action == google.picker.Action.CANCEL) {
           google.script.host.close();
       }
   }

   function showError(message) {
       document.getElementById('result').innerHTML = 'Error: ' + message;
   }
 </script>
</head>

<body>
   <div>
       <p id='result'></p>
   </div>
   <script type="text/javascript" src="https://apis.google.com/js/api.js?onload=onApiLoad"></script>
</body>
</html>
Как уже выше писали - на нужно взять результат того, что дает эта функция (Id папки) и вкрячить его в функцию, которая достает файлы этой папки и формирует из них массив
источник

Д

Дмитрий in Чат | Google Таблицы и скрипты
Eugeny Namokonov
Как уже выше писали - на нужно взять результат того, что дает эта функция (Id папки) и вкрячить его в функцию, которая достает файлы этой папки и формирует из них массив
именно это я и пытаюсь сделать, но что-то идет не так и пикер мне по прежнему просто показывает ИД папки
источник

AI

Alexander Ivanov in Чат | Google Таблицы и скрипты
источник

AI

Alexander Ivanov in Чат | Google Таблицы и скрипты
Дмитрий
именно это я и пытаюсь сделать, но что-то идет не так и пикер мне по прежнему просто показывает ИД папки
Он и должен показывать ИД папки. Пикер после выбора создает событие, в которое отправляет ИД. Подхватите это ИД и получите список файлов
var files = DriveApp.getFolderById(id).getFiles();
источник

EN

Eugeny Namokonov in Чат | Google Таблицы и скрипты
Дмитрий
именно это я и пытаюсь сделать, но что-то идет не так и пикер мне по прежнему просто показывает ИД папки
Ну окей, давайте покажу пример
источник

EN

Eugeny Namokonov in Чат | Google Таблицы и скрипты
function inside_folder(folder_id) {
 var arr = []
 
 for(var t = 0; t < folder_id.length; t++){
   var folder = DriveApp.getFolderById(folder_id[t])
   var files = folder.getFiles()
   
   while (files.hasNext()) {
     var file = files.next();
     
     arr = arr.concat([[folder.getName(), file.getName()]])  
   }
 }
 SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange(1, 1, arr.length, arr[0].length).setValues(arr)
}
источник

EN

Eugeny Namokonov in Чат | Google Таблицы и скрипты
Я не могу показывать пример абстрактно, соорудите какой-нибудь документ, пжл =)
источник

Д

Дмитрий in Чат | Google Таблицы и скрипты
Eugeny Namokonov
function inside_folder(folder_id) {
 var arr = []
 
 for(var t = 0; t < folder_id.length; t++){
   var folder = DriveApp.getFolderById(folder_id[t])
   var files = folder.getFiles()
   
   while (files.hasNext()) {
     var file = files.next();
     
     arr = arr.concat([[folder.getName(), file.getName()]])  
   }
 }
 SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange(1, 1, arr.length, arr[0].length).setValues(arr)
}
это вот тот код, который Вы мне показывали вчера?
источник

EN

Eugeny Namokonov in Чат | Google Таблицы и скрипты
Дмитрий
это вот тот код, который Вы мне показывали вчера?
Это код, в которой можно передать folder_id
источник

Д

Дмитрий in Чат | Google Таблицы и скрипты
источник

Д

Дмитрий in Чат | Google Таблицы и скрипты
Eugeny Namokonov
Это код, в которой можно передать folder_id
я там попробовал этот код добавить к коду пикера, но очевидно упускаю какую-нибудь мелочь и вместе оно не работает
источник

АТ

Алексей Тюхлов... in Чат | Google Таблицы и скрипты
Alexander Ivanov
Типа select pomidors, sum(kolvo) ?
ну просто, если на листе с базой данных изменилось количество колонок, то они поплыли и колонка "название компании" раньше была S, а теперь T, а у меня query по-прежнему тянет S и я уже получаю не тот столбец) можно ли это как-то решить? Не понял твой скрин.:)
источник

ПМ

Павел Мрыкин... in Чат | Google Таблицы и скрипты
Алексей Тюхлов
ну просто, если на листе с базой данных изменилось количество колонок, то они поплыли и колонка "название компании" раньше была S, а теперь T, а у меня query по-прежнему тянет S и я уже получаю не тот столбец) можно ли это как-то решить? Не понял твой скрин.:)
мы делаем с помощью таблицы с переменными, и Евгений подсказал классную штуку с впром по заданному массиву, позже сегодня или завтра с утра могу скинуть пример, напиши в личку.
источник

ПМ

Павел Мрыкин... in Чат | Google Таблицы и скрипты
недавно еще решали кейс, когда заранее неизвестно кол-во столбцов, с нотацией Col1, правда сейчас подумал, что не предусмотрели типы данных - следующая итерация )
источник

AS

Alexei Sladkov in Чат | Google Таблицы и скрипты
Всем привет! Никто не сталкивался с задачей в Google docs из одной таблички в другую надо забрать данные. Использую функцию importrange, но она всё время обновляет из-за этого виснут остальные процессы. Может есть какое-то решение, типо importrange, но по нажатию кнопки?
источник

EN

Eugeny Namokonov in Чат | Google Таблицы и скрипты
Alexei Sladkov
Всем привет! Никто не сталкивался с задачей в Google docs из одной таблички в другую надо забрать данные. Использую функцию importrange, но она всё время обновляет из-за этого виснут остальные процессы. Может есть какое-то решение, типо importrange, но по нажатию кнопки?
Привет, конечно есть
источник

EN

Eugeny Namokonov in Чат | Google Таблицы и скрипты
Друзья, привет. Сегодня суббота и выходит наша традиционная подборка ответов на ваши вопросы (ссылку, чтобы задать вопрос, можно найти в закрепленном сообщении).

ВНУТРИ:
— подробнейший разбор GAS скрипта копирования однотипных вкладок или что делать, когда не справляется IMPORTRANGE
— скрываем от посторонних глаз формулы
— и учимся сортировать ячейки по цвету
http://telegra.ph/Subbotnik-otvetov-voprosy-16-02-18-02-16
источник

EN

Eugeny Namokonov in Чат | Google Таблицы и скрипты
Надо написать скрипт, а выше - пример разобранного подобного скрипта из нашего канала.
источник

AS

Alexei Sladkov in Чат | Google Таблицы и скрипты
да, читаю. Спасибо, так и думал, что надо скрипт писать, но была надежда, что есть решение из коробки, сейчас попробую ваш адаптировать.
источник