2016-02-12 52 views
1

在我的电子表格中,参考点(28,9)处的单元格包含超链接。该代码然后将该单元格的内容复制到同一电子表格中的另一个工作表。现在它将复制文本,但新单元只包含文本而不包含超链接属性。有没有办法通过传输来保留超链接?我尝试查找超链接信息,但找不到答案......或者至少不是我理解的那个。我只有约2周的编码,所以还是不太了解。这里是我的代码:使用JS将单元格中的链接复制到另一个表格时,保留超链接URL

function submitButtonClick() { 
 
    
 
    var ss = SpreadsheetApp.getActive(); 
 
    var sheet = ss.getActiveSheet(); 
 
    
 
    Logger.log('sheet.getName(): ' + sheet.getName()); 
 
    
 
    
 
    if (sheet.getName() !== "SubmitReceipt") {return;}; 
 
    
 
    var targetSheet = ss.getSheetByName("ReceiptRecord"); 
 
    
 
    var arrayOfData = []; 
 
    
 
    var week = sheet.getRange(6,9).getValue(); 
 
    var emplN = sheet.getRange(4,9).getValue(); 
 
    var purDate = sheet.getRange(9,9).getValue(); 
 
    var purFrom = sheet.getRange(11,9).getValue(); 
 
    var custC = sheet.getRange(14,9).getValue(); 
 
    var deptC = sheet.getRange(16,9).getValue(); 
 
    var lotC = sheet.getRange(18,9).getValue(); 
 
    var laborC = sheet.getRange(20,9).getValue(); 
 
    var itemC = sheet.getRange(22,9).getValue(); 
 
    var hyperL = sheet.getRange(28,9).getValue(); 
 
    var notes = sheet.getRange(44,8).getValue(); 
 
    
 
    arrayOfData[0] = week; 
 
    arrayOfData[1] = emplN; 
 
    arrayOfData[2] = purDate; 
 
    arrayOfData[3] = purFrom; 
 
    arrayOfData[4] = custC; 
 
    arrayOfData[5] = deptC; 
 
    arrayOfData[6] = lotC; 
 
    arrayOfData[7] = laborC; 
 
    arrayOfData[8] = itemC; 
 
    arrayOfData[9] = notes; 
 
    arrayOfData[10] = hyperL; 
 
    
 
    Logger.log('arrayOfData '+ arrayOfData) 
 
    
 
    var lastRow = targetSheet.getLastRow(); 
 
    
 
    Logger.log('lastRow: ' + lastRow); 
 
    Logger.log('arraylength ' + arrayOfData.length); 
 
    
 
    targetSheet.getRange(lastRow+1, 1, 1, arrayOfData.length).setValues([arrayOfData]); 
 

 

 
    sheet.getRange(9,9).clearContent(); 
 
    sheet.getRange(11,9).clearContent(); 
 
    sheet.getRange(14,9).clearContent(); 
 
    sheet.getRange(16,9).clearContent(); 
 
    sheet.getRange(18,9).clearContent(); 
 
    sheet.getRange(20,9).clearContent(); 
 
    sheet.getRange(22,9).clearContent(); 
 
    sheet.getRange(28,9).clearContent(); 
 
    sheet.getRange(44,8).clearContent(); 
 
    
 
} 
 

预先感谢您的帮助。

更新:我找到了一个可能的解决方案并尝试了它,但随后发生了错误“TypeError:无法在对象Sample Receipt 6.jpg中找到函数getFormulaR1C1(第26行,”提交到记录“文件)

这里是更新的26行显示新的解决方案,我试过:再次

var url = hyperL.getFormulaR1C1();

感谢您的帮助。

回答

1

我想通了。注意“//更改”注释之间的差异。

function submitButtonClick() { 
 
    
 
    var ss = SpreadsheetApp.getActive(); 
 
    var sheet = ss.getActiveSheet(); 
 
    
 
    Logger.log('sheet.getName(): ' + sheet.getName()); 
 
    
 
    
 
    if (sheet.getName() !== "SubmitReceipt") {return;}; 
 
    
 
    var targetSheet = ss.getSheetByName("ReceiptRecord"); 
 
    
 
    var arrayOfData = []; 
 
    
 
    var week = sheet.getRange(6,9).getValue(); 
 
    var emplN = sheet.getRange(4,9).getValue(); 
 
    var purDate = sheet.getRange(9,9).getValue(); 
 
    var purFrom = sheet.getRange(11,9).getValue(); 
 
    var custC = sheet.getRange(14,9).getValue(); 
 
    var deptC = sheet.getRange(16,9).getValue(); 
 
    var lotC = sheet.getRange(18,9).getValue(); 
 
    var laborC = sheet.getRange(20,9).getValue(); 
 
    var itemC = sheet.getRange(22,9).getValue(); 
 
    var hyperL = sheet.getRange(28,9).getValue(); 
 
    var notes = sheet.getRange(44,8).getValue(); 
 
    
 
    
 
    
 
    
 
    //Changes 
 
    
 
    var range = SpreadsheetApp.getActiveSheet().getRange(28,9,1,3); 
 
    
 
    Logger.log('range= ' + range.getValue()); 
 
    
 
    Logger.log('hyperlink: ' + range.getFormulaR1C1()); 
 
    
 
    var url = /"(.*?)"/.exec(range.getFormulaR1C1())[1]; 
 
    
 
    Logger.log('url: ' + url); 
 
    
 
    //Changes 
 
    
 
    
 
    
 
    arrayOfData[0] = week; 
 
    arrayOfData[1] = emplN; 
 
    arrayOfData[2] = purDate; 
 
    arrayOfData[3] = purFrom; 
 
    arrayOfData[4] = custC; 
 
    arrayOfData[5] = deptC; 
 
    arrayOfData[6] = lotC; 
 
    arrayOfData[7] = laborC; 
 
    arrayOfData[8] = itemC; 
 
    arrayOfData[9] = notes; 
 
    arrayOfData[10] = hyperL; 
 
    arrayOfData[11] = url; 
 
    
 
    Logger.log('arrayOfData '+ arrayOfData) 
 
    
 
    var lastRow = targetSheet.getLastRow(); 
 
    
 
    Logger.log('lastRow: ' + lastRow); 
 
    Logger.log('arraylength ' + arrayOfData.length); 
 
    
 
    targetSheet.getRange(lastRow+1, 1, 1, arrayOfData.length).setValues([arrayOfData]); 
 

 

 
    sheet.getRange(9,9).clearContent(); 
 
    sheet.getRange(11,9).clearContent(); 
 
    sheet.getRange(14,9).clearContent(); 
 
    sheet.getRange(16,9).clearContent(); 
 
    sheet.getRange(18,9).clearContent(); 
 
    sheet.getRange(20,9).clearContent(); 
 
    sheet.getRange(22,9).clearContent(); 
 
    sheet.getRange(28,9).clearContent(); 
 
    sheet.getRange(44,8).clearContent(); 
 
    
 
} 
 

+1

代替代码个体线每一个值的,则可以创建行的阵列来获得:'VAR arrayRowsToGet = [6,4,9,11,14,16,18 ,等];然后遍历该数组:'var thisLoopValue =“”,theCellValue; for(var i = 0; i

相关问题