【发布时间】:2020-02-21 19:51:51
【问题描述】:
如果我的措辞不正确,请原谅我,我是 Scripts 的新手,但有人为我制作了一个脚本,可以在我拥有的工作表上运行 onEdit/Triggers。我还有一个用于日期/时间戳的 onEdit 脚本。昨天我让它们都简单地工作了,但是新的 onEdit 触发脚本开始失败;说明我有太多脚本。在触发器上导入的范围具有公式和条件格式。触发阶段 1、阶段 2、阶段 3 和 PIT 代码事件的单元格是数据验证单元格。工作表链接和代码在这篇文章的底部。
所以我想知道的是:
- 如何将四 (4) 个脚本合并为一 (1) 个脚本,以及
- 如果可以在脚本中添加编码以删除它导入的范围单元格,然后再放置新的触发单元格。因为它导入的每个范围都有条件格式,在触发新范围后会持续存在。
表格链接: https://docs.google.com/spreadsheets/d/1KYSiVggIm7KIKxpJMnUhldrzsIaETCqyjOWJ1a9k1cI/edit?usp=sharing
日期/时间戳代码:
function onEdit(e) {
const sheetNameFellowshipTracking = 'Fellowship Tracking';
const dateCol = 43;
// Get edited sheet.
const range = e.range;
const sheet = range.getSheet();
if (sheet.getName() === sheetNameFellowshipTracking)
{
// Get edited row.
const row = range.getRow();
if (row >= 4 && row <= 28)
{
// Get current time.
const time = Utilities.formatDate(new Date(), "GMT-05:00", "MM/dd, HH:mm");
// Set edited datetime.
const dateModifiedRange = sheet.getRange(row, dateCol);
dateModifiedRange.setValue(time);
}
}
}
第 1 阶段代码:
function onMyEdit(e) {
var sh=e.range.getSheet();
if(sh.getName()!='Fellowship Tracking')return;
if(e.range.columnStart==7 && e.range.rowStart==31 && e.value=='Stage 1') {
var srcrg=e.source.getSheetByName('ALL Stages+Pit').getRange('B3:G21');
var desrg=sh.getRange('C33');
srcrg.copyTo(desrg);
}
}
function createOnMyEditTrigger() {
var ss=SpreadsheetApp.getActive();
ScriptApp.newTrigger('onMyEdit').forSpreadsheet(ss.getId()).onEdit().create();
}
第 2 阶段代码:
function onMyEdit(e) {
var sh=e.range.getSheet();
if(sh.getName()!='Fellowship Tracking')return;
if(e.range.columnStart==7 && e.range.rowStart==31 && e.value=='Stage 2') {
var srcrg=e.source.getSheetByName('ALL Stages+Pit').getRange('H3:M21');
var desrg=sh.getRange('C33');
srcrg.copyTo(desrg);
}
}
function createOnMyEditTrigger() {
var ss=SpreadsheetApp.getActive();
ScriptApp.newTrigger('onMyEdit').forSpreadsheet(ss.getId()).onEdit().create();
}
第 3 阶段代码:
function onMyEdit(e) {
var sh=e.range.getSheet();
if(sh.getName()!='Fellowship Tracking')return;
if(e.range.columnStart==7 && e.range.rowStart==31 && e.value=='Stage 3') {
var srcrg=e.source.getSheetByName('ALL Stages+Pit').getRange('N3:S21');
var desrg=sh.getRange('C33');
srcrg.copyTo(desrg);
}
}
function createOnMyEditTrigger() {
var ss=SpreadsheetApp.getActive();
ScriptApp.newTrigger('onMyEdit').forSpreadsheet(ss.getId()).onEdit().create();
}
PIT 代码:
function onMyEdit(e) {
var sh=e.range.getSheet();
if(sh.getName()!='Fellowship Tracking')return;
if(e.range.columnStart==7 && e.range.rowStart==31 && e.value=='PIT') {
var srcrg=e.source.getSheetByName('PIT Sheet').getRange('B5:F17');
var desrg=sh.getRange('C33');
srcrg.copyTo(desrg);
}
}
function createOnMyEditTrigger() {
var ss=SpreadsheetApp.getActive();
ScriptApp.newTrigger('onMyEdit').forSpreadsheet(ss.getId()).onEdit().create();
}
【问题讨论】:
标签: google-apps-script google-sheets eventtrigger