0

Я ищу подход, с помощью которого я могу предоставить пользователю индивидуальную панель инструментов Google Sheet на основе некоторого идентификатора, который вводится или передается по URL-адресу.Отчет о доставке Google-листа: фильтр и конфиденциальность

Чтобы объяснить: на данный момент необработанные данные находятся в главном листе Google и обрабатываются и суммируются в другой информационной панели Google Sheet, которая требует ввода идентификатора, который действует как фильтр для необработанных данных, так что в сводке представлены только данные связанные с этим конкретным идентификатором и пользователем - это работает.

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

Как я могу создать отдельные листы (по одному на каждого пользователя), которые основаны на шаблоне? Возможно ли это с функциональностью по умолчанию или скриптом приложений? Любые советы очень ценятся, спасибо!

+0

Вам было бы лучше создать веб-приложение для скриптов приложений. Кажется, у вас уже есть панель инструментов. Это панель инструментов с HTML? Если это так, вы можете, вероятно, повторно использовать некоторые из них в веб-приложении. Множество людей могут открыть одно и то же веб-приложение, не задавая вопрос о том, что один пользователь видит что-либо от другого пользователя. Каждый открытый экземпляр будет уникальным для этого человека. Чтобы создать веб-приложение, используйте «автономный» файл сценариев приложений. В настоящий момент код сценария приложений может быть «привязан» к вашей электронной таблице. –

+0

Спасибо, Сэнди! Можете ли вы подробнее рассказать об этом: как бы выглядел сценарий приложений? В настоящее время панель инструментов - это только лист Google, в котором запрашивается идентификатор, с помощью которого он фильтрует базовые данные. Должен ли я создать панель мониторинга в скрипте приложений, есть ли простой способ ее создания с помощью пользовательского интерфейса Google Sheet и имитировать/передать это на панель инструментов Web App? Еще раз спасибо! –

+0

Для того, что я предлагаю, вам нужно будет использовать HTML, клиентский JavaScript и CSS. Возможно, вам нужно будет научиться создавать таблицу в HTML для отображения результатов. Вы могли бы использовать что-то вроде Awesome Tables. Ниже приведена ссылка на документацию Script Script для веб-приложений: [Ссылка - веб-приложения] (https://developers.google.com/apps-script/guides/web) –

ответ

0

Это один вариант, вы можете попробовать, вы можете получить электронный идентификатор пользователя, который открывает таблицу Google следующим образом:

function onOpen(e) { 

    var email = Session.getEffectiveUser().getEmail() 
    var ui = SpreadsheetApp.getUi() 
    ui.alert(email) 
    //doSomethingSpecificBasedOnEmail(email) call function that fliters data based on email ID 
} 

Примечание: Есть несколько нюансов использования Session.getEffectiveUser(). Основываясь на настройке разрешения и безопасности, он может предоставить вам пустой пользователь/адрес электронной почты. https://developers.google.com/apps-script/reference/base/session#getActiveUser()

Второй вариант: Если идентификатор электронной почты не является вариантом, и с тех пор, как вы в порядке с пользователями, вводящими идентификатор для доступа к данным. Этот код запрашивает идентификатор и создает копию листа, называемого шаблоном, а также устанавливает значение A1 как идентификатор. Затем лист может использовать идентификатор для получения идентификационных данных и создания графиков.

function onOpen(){ 
    var ui = SpreadsheetApp.getUi(); 
var response = ui.prompt('Get ID:'); 

// Process the user's response. 
if (response.getSelectedButton() == ui.Button.OK) { 
    var id = response.getResponseText(); 
    var ss = SpreadsheetApp.getActive() 
    var lookupSheet = ss.getSheetByName(id) 
    if(lookupSheet == null){ 
    var template = ss.getSheetByName("Template") 
    var newSheet = template.copyTo(ss) 
    newSheet.setName(id) 
    newSheet.getRange(1,1).setValue(id) 
    newSheet.activate() 
    } else 
    { 
    lookupSheet.activate 
    } 
} else { 
    Logger.log('The user clicked the close button in the dialog\'s title bar.'); 
} 
} 

Пример этого можно найти здесь: https://docs.google.com/spreadsheets/d/1RPHUGKi7u9jJVc-3xCaYlrZ8kaHWvpl6gPZxUL1g32Y/edit?usp=sharing

Примечание: Люди могут видеть друг друга, хотя лист, который я предполагаю, основанный на ваш пост не является проблемой. Однако, если это не так, лучшим вариантом является использование скрипта Google Web App.

+0

Так, чтобы все пользователи имели адрес электронной почты в том же домене или Google? Если это так, то это ограничивает то, что я стремлюсь достичь. Другие идеи? –

+0

Хорошо обновил ответ с помощью нового метода, надеюсь, что он будет работать лучше –