Действительно, это не так очевидно с первого раза, но, когда сталкиваешься, то понимаешь, что пользователь должен быть редактором, чтобы вносить изменения. Чтобы решить эту задачу необходимо предоставить
другой интерфейс для ввода данных.
Замените
myFunction
на что-то вроде:
function recordToMain(){
// Берет диапазон 'Источник!B4:B8' активной Таблицы, т.о. это встроенный скрипт
var data = SpreadsheetApp.getActive().getRange('Источник!B4:B8')
.getValues().map(function(row){return row[0];});
var url = 'https://script.google.com/macros/s/ZZZ/exec';
var options = {
method: 'POST',
headers: {
ContentType: 'application/json'
},
payload: JSON.stringify(data),
muteHttpExceptions: true
};
UrlFetchApp.fetch(url, options);
};
Так же создайте новый проект скриптов, в котором создайте функцию вроде:
function doPost(e) {
SpreadsheetApp.openById('YYY') // Должна существовать
.getSheetByName('Приемник') // Должен быть лист 'Приемник'
.appendRow([new Date()].concat(JSON.parse(e.postData.contents)));
}
Когда вы опубликуете новый проект для всех от имени себя, то получите
url_master
для первой функции.