Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 在多个选项卡中运行脚本_Google Apps Script_Google Sheets_Triggers - Fatal编程技术网

Google apps script 在多个选项卡中运行脚本

Google apps script 在多个选项卡中运行脚本,google-apps-script,google-sheets,triggers,Google Apps Script,Google Sheets,Triggers,我想在谷歌工作表上的所有标签中运行以下脚本(不仅仅是2021年1月),有什么想法吗 function onEdit(e) { var ss = SpreadsheetApp.getActiveSheet(); var r = ss.getActiveCell(); //1.Change 'Sheet1' to be matching your sheet name if (r.getColumn() < 9 && ss.getName()=='Jan 20

我想在谷歌工作表上的所有标签中运行以下脚本(不仅仅是2021年1月),有什么想法吗

function onEdit(e) {

  var ss = SpreadsheetApp.getActiveSheet();
  var r = ss.getActiveCell();
  //1.Change 'Sheet1' to be matching your sheet name
  if (r.getColumn() < 9 && ss.getName()=='Jan 2021') { // 2. If Edit is done in any column before 
Column (I)  And sheet name is Sheet1 then:
var celladdress ='A'+ r.getRowIndex() 
ss.getRange(celladdress).setValue(new Date()).setNumberFormat("dd/MM/yyyy");
  }
};
函数onEdit(e){
var ss=SpreadsheetApp.getActiveSheet();
var r=ss.getActiveCell();
//1.将“Sheet1”更改为与您的工作表名称匹配
如果(r.getColumn()<9&&ss.getName()=='Jan 2021'){//2.如果之前在任何列中进行了编辑
第(I)列和图纸名称为Sheet1,然后:
var celladdress='A'+r.getRowIndex()
ss.getRange(celladdress).setValue(new Date()).setNumberFormat(“dd/MM/yyyy”);
}
};

解决方案1-预先定义的图纸名称列表:

一种解决方案是预定义
onEdit
功能要应用的工作表的工作表名称,并用于检查活动工作表是否为其中之一:

function onEdit(e) {

  var ss = SpreadsheetApp.getActiveSheet();
  var r = ss.getActiveCell();
  var sheetNames = ['Sheet1','Jan 2021','Feb 2021']; 

  if (r.getColumn() < 9 && sheetNames.includes(ss.getName()) ) { 
var celladdress ='A'+ r.getRowIndex() 
ss.getRange(celladdress).setValue(new Date()).setNumberFormat("dd/MM/yyyy");
  }
};

解决方案3-运行到所有工作表,不包括部分工作表:

它基于第一个解决方案的逻辑。你使用
!包括
排除您不想成为onEdit功能一部分的预先定义的工作表列表:

function onEdit(e) {

  var ss = SpreadsheetApp.getActiveSheet();
  var r = ss.getActiveCell();
  var sheetNamesExclude = ['Sheet2','Jun 2021','Aug 2021']; 

  if (r.getColumn() < 9 && !sheetNamesExclude.includes(ss.getName()) ) { 
var celladdress ='A'+ r.getRowIndex() 
ss.getRange(celladdress).setValue(new Date()).setNumberFormat("dd/MM/yyyy");
  }
};
函数onEdit(e){
var ss=SpreadsheetApp.getActiveSheet();
var r=ss.getActiveCell();
var sheetNamesExclude=['Sheet2'、'Jun 2021'、'Aug 2021'];
如果(r.getColumn()<9&&!sheetNamesExclude.includes(ss.getName()){
var celladdress='A'+r.getRowIndex()
ss.getRange(celladdress).setValue(new Date()).setNumberFormat(“dd/MM/yyyy”);
}
};

@Ruben您用来以重复方式结束此问题的帖子可能与此帖子标题相同,但解决方案与OP要求的截然不同。Mogsdad的答案开始解释如何使用事件对象。。。这是解决这个问题的核心。另一方面,OP没有包括任何关于他们在中建议的搜索/研究工作的信息,我们已经有很多类似的问题。@Rubén事件对象如何成为问题的核心?我和OP都没有使用它。@Rubén“…OP没有包含任何关于他们的…”的信息,这是这里的大多数问题。所有的门都应该关上吗?@Rubén Oh拜托。。。。没有评论:/很好的回答。很遗憾它被标记为重复。非常感谢大家!希望将来我能帮助别人,因为我积累了一些知识
function onEdit(e) {

  var ss = SpreadsheetApp.getActiveSheet();
  var r = ss.getActiveCell();
  var sheetNamesExclude = ['Sheet2','Jun 2021','Aug 2021']; 

  if (r.getColumn() < 9 && !sheetNamesExclude.includes(ss.getName()) ) { 
var celladdress ='A'+ r.getRowIndex() 
ss.getRange(celladdress).setValue(new Date()).setNumberFormat("dd/MM/yyyy");
  }
};