当在 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 脚本编辑器中,将鼠标悬停在左侧菜单上,单击触发器,单击添加触发器并将设置复制到此处:
输出:
演示:
参考文献:
我在这方面完全是新手,非常感谢您的帮助。 我需要有人帮助我创建一个应用程序脚本代码,每次在 Google [=17= 的 A 列中输入新数据时,都会在 Google Drive 中创建一个新作品 sheet ](我们称它为 master sheet)。 新作品的名称sheet 将是Master Sheet 的A 列中最后输入的数据。 Newsheet的link也会插入到MasterSheet
的J列在编辑 ColumnA
时插入 sheet用 A 列的内容命名 Sheet 并在 J
列中插入 sheet linkfunction 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 脚本编辑器中,将鼠标悬停在左侧菜单上,单击触发器,单击添加触发器并将设置复制到此处:
输出:
演示: