如何指定谷歌API代码应该在其中工作的电子表格?



我的谷歌表格文档有多个表格(标签(。如何指定代码应在其中工作的电子表格? 我正在使用下面帖子中的最后一个代码来收集更改特定单元格的日期和用户,但该代码适用于我文档中的所有电子表格(选项卡(。

是否可以在Google文档电子表格中将编辑器的用户名写入单元格

我希望它只在一个电子表格上工作:"测试">

我试过这个,但无济于事:

var s = SpreadsheetApp.getActiveSpreadsheet((.getSheetByName("Test"(;

function getOwnName(){
var email = Session.getActiveUser().getEmail();
//Browser.msgBox("getOwnName");
//var self = ContactsApp.getContact(email);
var self = false; 
// If user has themselves in their contacts, return their name
if (self) {
// Prefer given name, if that's available
var name = self.getGivenName();
// But we will settle for the full name
if (!name) 
{
name = self.getFullName();
}
//Browser.msgBox(name);
return name;
}
// If they don't have themselves in Contacts, return the bald userName.
else {
var userName = Session.getActiveUser().getEmail();
//Browser.msgBox(userName);
return userName;
}
}
function onEdit() {
var s = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Test");
var r = s.getActiveCell();
if( r.getColumn() == 14 ) //checks the column
{ 
var nextCell = r.offset(0, 1);      
nextCell.setValue(new Date());
//Browser.msgBox("hey!");
//s.setActiveSelection(p + "15");
//show();
//SpecialonOpen();
var nCell = r.offset(0,2);
//Browser.msgBox("olah:" + getOwnName());
nCell.setValue(getOwnName());
}
}

活动单元格是正在编辑的单元格,无论工作表是什么。

如果你想坚持getActiveCell(),你需要实现一个if语句来验证你是否在正确的工作表中:

function onEdit() {
if(SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getName()=="Test")
{
var s = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var r = s.getActiveCell();
if( r.getColumn() == 14 ) //checks the column
{ 
...

另一种优雅的解决方案是使用 e.range:

function onEdit(e) {
if(SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getName()=="Test")
{
var r = e.range;
if( r.getColumn() == 14 ) //checks the column
{ 
...

相关内容

最新更新