Есть ли способ добавить всех в таблицу Google? - PullRequest
0 голосов
/ 11 января 2020

новый для скрипта Google Apps здесь.

У меня есть собственный скрипт, который запускается с помощью кнопки, и мне любопытно, есть ли способ добавить всех пользователей в электронную таблицу, а не просто пользователя, который выполняет скрипт. Я не заинтересован в том, чтобы отправлять им электронные письма, так как им нужна еще одна вкладка для просмотра. Я хотел бы, чтобы тост был виден всем на листе.

function addComment() {

var activeSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var newSheet = activeSpreadsheet.getActiveSheet();
var unitAdj = newSheet.getRange("W3").getValue();
var rangeFormulaP = ("$P$" + unitAdj + "");  
var rangeFormulaO = ("$O$" + unitAdj + "");  
var emailID = (Session.getActiveUser().getEmail());
var emailFormula = ('"' + emailID + '"');
var rows = newSheet.getRange("W2").getValue();
var newRows = (rows)+1;
var rangeFormulaA = ("$A$" + rows + "");
var rangeFormulaB = ("$B$" + rows + "");
var rangeFormulaC = ("$C$" + rows + "");
var rangeFormulaK = ("$K$" + unitAdj + "");
var incidentNumber = newSheet.getRange("C5").getValue();

newSheet.insertRowsAfter(rows, 1);
newSheet.getRange(rangeFormulaA).setValue(new Date()).setNumberFormat("hh:mm:ss");  
newSheet.getRange(rangeFormulaA).setHorizontalAlignment("left");
newSheet.getRange(rangeFormulaB).setValue('=VLOOKUP(' + emailFormula + ', Library!H151:I159,2,FALSE)');
newSheet.getRange(rangeFormulaA).setFontSize(14);
newSheet.getRange(rangeFormulaB).setFontSize(14);
newSheet.getRange(newRows,3,1,6).merge();
SpreadsheetApp.flush();
newSheet.getRange(rangeFormulaO).copyTo(newSheet.getRange(rangeFormulaP), {contentsOnly: true});
newSheet.getRange(rangeFormulaB).copyTo(newSheet.getRange(rangeFormulaB), {contentsOnly: true});   
var comments = newSheet.getRange(rangeFormulaP).getValue();
newSheet.getRange(rangeFormulaC).setValue(comments);
newSheet.getRange(rangeFormulaC).setFontSize(14);
newSheet.getRange("W2").setValue(newRows);
newSheet.getRange(rangeFormulaK).setValue("");
activeSpreadsheet.toast("EVENT COMMENTS UPDATED", incidentNumber, 10);

Я бы хотел, чтобы этот тост был отправлен всем, кто находится в электронной таблице, чтобы они знали, как проверить страницу. Функция добавляет новую строку в конец «раздела комментариев» на листе.

1 Ответ

0 голосов
/ 13 января 2020

РЕДАКТИРОВАТЬ (обновление)

Невозможно вызвать пользовательский интерфейс другого пользователя, так как сценарий может выполняться только для пользователя, который его выполняет.

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


Если вы ссылаетесь на всплывающее сообщение для любого, кто имеет доступ к Листу, тогда оно будет выполняться каждый раз, когда кто-то открывает его. Имейте в виду, что это не будет работать для пользователей с доступом только для чтения:

function onOpen(){
  SpreadsheetApp.getActiveSpreadsheet().toast("hello there");

}

Подробнее о onOpen Trigger здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...