Google App Script-根据值将行复制到电子表格,同时保留超链接



我是JavaScript的初学者,已经参加了几个月的课程。到目前为止,我已经编写了几个脚本,这些脚本已经启动并运行。我有一个无法解决的问题,找到一个解决方案非常重要,所以我希望有人能帮助我。

我有谷歌的调查正在提交和一个上甚至表单生成器脚本,创建一个表单,并在谷歌表产生一个链接。我遇到的问题是,我需要能够使用脚本过滤属于某些人的表单到不同的电子表格。我已经写了几个方法来尝试实现这个脚本,但都没有成功。脚本按预期工作,但当它被复制或移动时,它会删除表单生成器链接。

下面是我写的过滤器脚本:

function myFunction() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var trn = ss.getSheetByName('Hull - NY');
var originalData = trn.getRange(2, 1, trn.getLastRow() - 1, 12).getValues();
var centerManager = 'Brooks, Robert';
if (trn.getColumn() == 3 && trn.getValue() == 'Brooks, Robert') {
var r = originalData.getRow();
var data = originalData.filter(function (item) {
return item[1] === centerManager;
});
var targetSheet = ss.insertSheet(centerManager);
targetSheet.getRange(2, 1, data.length, data[0].length).setValues(data).getLastRow();
}
}

我很感激能提供的任何帮助!

您必须阅读公式,然后使用公式而不是单元格值,其中存在公式。

function myFunction() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const trn = ss.getSheetByName('Hull - NY');
const sourceRange = trn.getDataRange()
const originalValues = sourceRange.getValues();
const originalFormulas = sourceRange.getFormulas()
const centerManager = 'Brooks, Robert';
const MANAGER_COL = 2
const data = []
originalValues.forEach((row,i)=>{ 
if(row[MANAGER_COL-1] === centerManager){
originalFormulas[i].forEach((formula,i)=>{
if(formula[i]){
row[i] = formula
}
})
data.push(row)
}
});
const targetSheet = ss.insertSheet(centerManager);
if(data.length>0){
targetSheet.getRange(2, 1, data.length, data[0].length).setValues(data).getLastRow();
}
}

最新更新