当在 Google sheet 中输入新数据时,用于创建新作品的 Apps 脚本 sheet

Appscript to create a new worksheet when new data is entered in Google sheet

我在这方面完全是新手,非常感谢您的帮助。 我需要有人帮助我创建一个应用程序脚本代码,每次在 Google [=17= 的 A 列中输入新数据时,都会在 Google Drive 中创建一个新作品 sheet ](我们称它为 master sheet)。 新作品的名称sheet 将是Master Sheet 的A 列中最后输入的数据。 Newsheet的link也会插入到MasterSheet

的J列

在编辑 ColumnA

时插入 sheet

用 A 列的内容命名 Sheet 并在 J

列中插入 sheet link
function onEdit(e) {
  //e.source.toast('Entry1')
  const sh = e.range.getSheet();
  if (sh.getName() == "Master Sheet" && e.range.columnStart == 1 && e.range.rowStart > 1 && !e.oldValue && e.value) {
    //e.source.toast('Flag1');
    let sh = e.source.insertSheet(e.value);
    if (sh) {
      e.range.offset(0, 9).setValue(`https://docs.google.com/spreadsheets/d/${e.source.getId()}/edit#gid=${sh.getSheetId()}`)
    }
  }
}

对于此版本,您可能需要使用不应命名为 onEdit 的可安装 onEdit 触发器。

function onMyEdit(e) {
  //e.source.toast('Entry1')
  const sh = e.range.getSheet();
  if (sh.getName() == "Master Sheet" && e.range.columnStart == 1 && e.range.rowStart > 1 && !e.oldValue && e.value) {
    //e.source.toast('Flag1');
    let nss = SpreadsheetApp.create(e.value);
    if (nss) {
      e.range.offset(0, 9).setValue(`https://docs.google.com/spreadsheets/d/${e.source.getId()}/edit#gid=${sh.getSheetId()}`)
    }
  }
}

试试这个:

function colAEdit(e){
  var sh = e.range.getSheet();
  var aLast = sh.getRange("A"+(sh.getLastRow()+1)).getNextDataCell(SpreadsheetApp.Direction.UP).getRow(); //get the last row
  
  // The if statement below will check the following: if the edited sheet is Master Sheet,  
  // if the edited cell row is > 1, if the edited cell row is the latest row  
  // if the edited cell col is == 1, if old value of edited cell is null and if the edited cell has content
  if(sh.getName() == "Master Sheet" && e.range.getRow() > 1 && 
      e.range.getRow() == aLast && e.range.getColumn() == 1 && 
      !e.oldValue && e.value){                                
        var newSpreadSheet = SpreadsheetApp.create(e.value);
        if(newSpreadSheet){
          e.range.offset(0, 9).setValue(newSpreadSheet.getUrl())
        }
      }
}

确保在您的 Apps 脚本中创建可安装触发器。

要设置触发器,在 Apps 脚本编辑器中,将鼠标悬停在左侧菜单上,单击触发器,单击添加触发器并将设置复制到此处:

输出:

演示:

参考文献: