- Ваша электронная таблица доступна пользователям.
- Вы хотите, чтобы пользователи запускали ваш скрипт, нажимая кнопку в электронной таблице.
- Вы хотите, чтобы пользователи использовали ваш список задач.
- Список задач принадлежит вам.
Если мое понимание верно, как насчет этого ответа?Пожалуйста, подумайте об этом как об одном из нескольких ответов.
Причина вашей проблемы:
Когда пользователи запускают ваш сценарий в электронной таблице, нажимая кнопку на листе, сценарий запускается для каждого пользователя.,Таким образом, пользователи не могут найти mytasklistid
из var tasklistID="mytasklistid"
из списка задач пользователя.Я думаю, что причина вашей проблемы заключается в следующем.
Обходной путь:
Как один из нескольких обходных путей, как насчет использования веб-приложений?Это также упоминается TheMaster .Когда веб-приложения развертываются как Execute the app as: Me
, даже если другие пользователи запускают сценарий веб-приложений, он запускается как владелец веб-приложений (вы).В этой ситуации, когда пользователи запускают сценарий, нажимая кнопку, пользователи запрашивают веб-приложения, развернутые с помощью UrlFetchApp.Таким образом, пользователи могут использовать ваш идентификатор списка задач.Этот обходной путь использует эту ситуацию.Этот способ обхода выглядит следующим образом.
- Разверните сценарий как веб-приложения.
- Установить
Execute the app as:
как Me
. - Установить
Who has access to the app:
как Anyone, even anonymous
.Этот параметр предназначен для тестирования.
- Пользователи используют развернутые веб-приложения как внешний API.
Таким образом, пользователи могут использовать ваш список задач.
Пример сценария:
Пример сценария выглядит следующим образом.Существует 2 примера сценариев для серверной части (ваш сценарий) и клиентской (пользовательский сценарий) соответственно.Вы также можете поместить оба сценария в один и тот же проект.
- Пожалуйста, скопируйте и вставьте «Сторона сервера» в свой проект и разверните его как веб-приложения.
- О том, как развертывать веб-приложения, вы можете узнать по адресу здесь .
- Скопируйте и вставьте «Клиентскую часть» в проект пользователя (связанный скрипт электронной таблицы, включая кнопку).В настоящее время задайте URL-адрес веб-приложений, например
https://script.google.com/macros/s/###/exec
.
На стороне сервера: ваш скрипт
function doGet() {
var tasks = getTasks();
return ContentService.createTextOutput(JSON.stringify(tasks)).setMimeType(ContentService.MimeType.JSON);
}
function getTasks() {
var tasklistID="mytasklistid";
var tasks=Tasks.Tasks.list(tasklistID);
return tasks;
}
На стороне клиента: скрипт пользователя
Присвойте эту функцию кнопке.
function getTask(){
var url = "https://script.google.com/macros/s/###/exec";
var tasks = UrlFetchApp.fetch(url);
Logger.log(tasks)
}
Примечание:
- Когда вы изменяете свой скрипт веб-приложений, пожалуйста, повторно разверните его как новую версию.Таким образом, последний скрипт отражается на веб-приложениях.Это важный момент для использования веб-приложений.
- В этом обходном пути библиотека и клиент разделены.Пользователи в качестве клиента получают данные из веб-приложений.
Ссылки:
Если я неправильно понял ваш вопрос, но это не тот результат, который вам нужен, я приношу свои извинения.