Google Sheets Apps 脚本追加行和超链接
Googlesheets Apps Script append row and hyperlink
我有一个代码,可以在对电子表格进行的每次编辑后附加行,并包含以下详细信息:
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()]);
}
我真正想做的是使用此函数将 'Cell Location' 部分超链接到原始位置:
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().. 看起来不对,但我不确定..
谢谢
在您作为最终代码包含的内容中,您没有在 .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()]);
}
我有一个代码,可以在对电子表格进行的每次编辑后附加行,并包含以下详细信息:
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()]);
}
我真正想做的是使用此函数将 'Cell Location' 部分超链接到原始位置:
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().. 看起来不对,但我不确定..
谢谢
在您作为最终代码包含的内容中,您没有在 .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()]);
}