Googlesheets Apps Script добавляет строку и гиперссылку - PullRequest
0 голосов
/ 27 апреля 2018

У меня есть код, который добавляет строку к каждому редактированию, внесенному в электронную таблицу, со следующими данными:

Date, Time, Sheet Name, Cell Location, User

Код:

function onEdit() {
  var ss = SpreadsheetApp.getActiveSpreadsheet(); 
  var sheet = ss.getActiveSheet();
  var timestamp = new Date();
  var sheetName = sheet.getName();


  sheet.appendRow([Utilities.formatDate(timestamp, "GMT", "dd-MMM-yyyy"),
  Utilities.formatDate(timestamp, "GMT", "E"),
  Utilities.formatDate(timestamp, SpreadsheetApp.getActiveSpreadsheet().getSpreadsheetTimeZone(), "HH:mm:ss"),
  sheetName,
  sheet.getActiveCell().getA1Notation(),
  Session.getActiveUser().getEmail()]);

}

Что я действительно хочу сделать, так это сделать гиперссылку «Расположение ячейки» с помощью этой функции:

sheet.getRange(1,1)
.setValue('=hyperlink("https://docs.google.com/spreadsheets/d/'+ss.getId()
+'/edit#gid='
+ss.getActiveSheet().getSheetId()
+'&range='
+sheet.getActiveCell().getA1Notation()+'")');

Итак, окончательный код:

function onEdit() {
  var ss = SpreadsheetApp.getActiveSpreadsheet(); 
  var sheet = ss.getActiveSheet();
  var timestamp = new Date();
  var sheetName = sheet.getName();

  sheet.appendRow([Utilities.formatDate(timestamp, "GMT", "dd-MMM-yyyy"),
  Utilities.formatDate(timestamp, "GMT", "E"),
  Utilities.formatDate(timestamp, SpreadsheetApp.getActiveSpreadsheet().getSpreadsheetTimeZone(), "HH:mm:ss"),
  sheetName,

  .setValue('=hyperlink("https://docs.google.com/spreadsheets/d/'+ss.getId()
   +'/edit#gid='
   +ss.getActiveSheet().getSheetId()
   +'&range='
   +sheet.getActiveCell().getA1Notation()+'")'),

  Session.getActiveUser().getEmail()]);

}

Но это не работает. Любой совет будет оценен.

Я подозреваю, потому что я начал это, но с .setValue () .. Просто выглядит неправильно, но я не уверен ..

Спасибо

1 Ответ

0 голосов
/ 27 апреля 2018

в том, что вы включили в качестве окончательного кода, вы не включили диапазон перед вашим .setValue (). в этом случае вам даже не понадобится .setValue, потому что добавляемое вами значение находится прямо в строке. Так что вы можете попробовать что-то вроде этого:

function onEdit() {
  var ss = SpreadsheetApp.getActiveSpreadsheet(); 
  var sheet = ss.getActiveSheet();
  var timestamp = new Date();
  var sheetName = sheet.getName();

  var link = '=hyperlink("https://docs.google.com/spreadsheets/d/'+ss.getId()
  +'/edit#gid='+ss.getActiveSheet().getSheetId()+'&range='
  +sheet.getActiveCell().getA1Notation()+'")';

  sheet.appendRow([Utilities.formatDate(timestamp, "GMT", "dd-MMM-yyyy"), 
  Utilities.formatDate(timestamp, "GMT", "E"),
  Utilities.formatDate(timestamp, 
  SpreadsheetApp.getActiveSpreadsheet().getSpreadsheetTimeZone(), "HH:mm:ss"),
  sheetName,link,Session.getActiveUser().getEmail()]);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...