我需要将所有超链接单元格在移动后复制到选项卡 - 当我的客户从“打开”移动到“已交付”时,它需要能够返回到该链接的选项卡
我不是专业人士,但这是我当前的脚本 - 不确定我做错了什么:
function onEdit(e){
let col = range.getColumn();
let row = range.getRow();
let val = range.getValue();
let source = e.source.getActiveSheet();
if (col == 9 && val != ''){
let ss = SpreadsheetApp.getActiveSpreadsheet();
let sheet = ss.getSheetByName(source.getName());
let targetSheet = ss.getSheetByName(val);
let data = sheet.getRange(row,1,1,sheet.getLastColumn()).getRichTextValues();
targetSheet.getRange(targetSheet.getLastRow()+1,1,1,data[0].length).setRichTextValues(data);
targetSheet.getRange(targetSheet.getLastRow(),1).clearContent();
sheet.deleteRow(row);
}
}
它复制了该行的其余部分,但现在复制了带有超链接的单元格-
谢谢!
我没有尝试太多编辑脚本,因为我不确定错误发生在哪里,因为当我运行它时没有任何显示不正确
就像@Saddles所说,如果您希望在移动到其他Google表格选项卡时保留超链接格式,则可以使用
copyTo
。
我修改并删除了你的一些代码以得到你想要的输出。
我更改了此代码:
let data = sheet.getRange(row, 1, 1, sheet.getLastColumn()).getRichTextValues();
致:
let data = sheet.getRange(row, 1, 1, sheet.getLastColumn());
并替换此代码:
targetSheet.getRange(targetSheet.getLastRow() + 1, 1, 1, data[0].length).setRichTextValues(data);
targetSheet.getRange(targetSheet.getLastRow(), 1).clearContent();
与:
data.copyTo(targetSheet.getRange(targetSheet.getLastRow() + 1, 1), { contentsOnly: false })
而且,我在您的代码中添加了
。e.range
function onEdit(e) {
let range = e.range;
let col = range.getColumn();
let row = range.getRow();
let val = range.getValue();
let source = e.source.getActiveSheet();
if (col == 9 && val != '') {
let ss = SpreadsheetApp.getActiveSpreadsheet();
let sheet = ss.getSheetByName(source.getName());
let targetSheet = ss.getSheetByName(val);
let data = sheet.getRange(row, 1, 1, sheet.getLastColumn());
data.copyTo(targetSheet.getRange(targetSheet.getLastRow() + 1, 1), { contentsOnly: false })
sheet.deleteRow(row);
}
}
注意:我只是假设你的样本表是这样的。