如何解决粘贴数据时不会触发onEdit 发件人:收件人:
使用onEdit触发器在云端硬盘中创建一个文件夹。在字段中键入数据时有效,但在粘贴数据时不会触发。已更新,其中包含建议的更改,但仍不会触发粘贴数据。
function createSpreadsheetEditTrigger() {
const ss = SpreadsheetApp.openById('1IzR2ceVKG8SSTDHMx-N6NCuzzUHGyAOHHsykT7r-xcg');
ScriptApp.newTrigger('addFolder')
.forSpreadsheet(ss)
.onEdit()
.create();
}
function addFolder(e) {
// helps with verifying where data was entered
// in the sheet
const myNewColumn = e.range.getColumn()
const myNewRow = e.range.getRow()
const value = e.range.getValues().flat().join("");
if (myNewColumn == 1 && myNewRow > 2 && value.includes(",")) {
// capture first and last name entered
const firstName = e.value.split(",")[1]
const lastName = e.value.split(",")[0]
// identify the folder where
// new student folders will exist
const folder = DriveApp.getFolderById('1l_dYf74ITGiUzu10t72XCig2HWL_Q0PH')
// create student's new folder
const newFolder = folder.createFolder(`${lastName},${firstName} - Evidence`)
const newFolderId = newFolder.getId()
const specificNewFolder = DriveApp.getFolderById(newFolderId)
// add subfolders to student folder
const ela = newFolder.createFolder("ELA")
const math = newFolder.createFolder("Math")
const behavior = newFolder.createFolder("Behavior")
// create form
const form = FormApp.create(`${lastName},${firstName} Feedback Form`);
form.setTitle(`${lastName},${firstName}`)
.setDescription('Progress on Goal Feedback Form')
解决方法
复制和粘贴值时,事件对象不包含value
。我认为这是您遇到问题的原因。因此,为了既可以手动输入值,又可以复制和粘贴值,请进行以下修改?
发件人:
if (myNewColumn == 1 && myNewRow > 2 && e.value.includes(",")) {
收件人:
const value = e.range.getValues().flat().join(""); // Added
if (myNewColumn == 1 && myNewRow > 2 && value.includes(",")) { // Modified
,
仅当单个单元格被编辑且不为空时,才包括编辑事件对象的属性value
。
考虑到上述情况,您应该改进代码以使用e.range.getValues()
而不是e.value。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。