2015-11-02 75 views
0

我想创建一个脚本来将表单的活动行(TIME MACHINE)复制到另一个Google电子表格的表单(数据库)。我也想发送“1”到复制行的第13行。如果有人能指导我,那将是非常棒的。下面给出的代码只能在同一电子表格中复制。仅将活动行从一个电子表格复制到另一个电子表格

function endTime() { 

transfer("1E3CWWohirN4DD_f_23WWBElYrhqnAs_27crrxowFjFA", "TIME MACHINE", "TIME MACHINE2") 

} 

function transfer(targetId, sourceSheetName, targetSheetName) { 

var d = new Date(); 
var offset = -d.getTimezoneOffset()/60; 
var h = d.getHours(); 
var h = h >= 13? h - 12: h; 
h = h == 0? 12: h; 
var m = m < 10? "0" + d.getMinutes(): d.getMinutes(); 
var s = d.getSeconds(); 
var ss = SpreadsheetApp.getActiveSpreadsheet(); 
var sourceSheet = ss.getSheetByName(sourceSheetName); 
var last = sourceSheet.getActiveRange().getRow(); 
var data = sourceSheet.getRange(last, 1, 1, 14).getValues(); 
var time1 = h + ":" + m + ":" + s; 

sourceSheet.getRange(last, 28).setValue(time1); 


var tamma = sourceSheet.getRange(last, 11).getValue(); 

// copy data 
var ss2 = SpreadsheetApp.openById(targetId); 
var targetSheet = ss2.getSheetByName(targetSheetName); 
//get last row 
var lastRow = targetSheet.getLastRow(); 
//write data 
targetSheet.getRange(lastRow + 1, 1, data.length, data[0].length).setValues(data); 
//write "1" into column 13 
targetSheet.getRange(lastRow + 1, 13, data.length, 1).setValue("1"); 
targetSheet.getRange(lastRow + 1, 11, data.length, 1).setValue(tamma); 
} 
+0

你的意思是第13列? – jvdh

+0

哦,是的!你是对的。 jvdh我试着用你以前的代码,但它给了我错误。 – Mask

+0

好的,对不起,我不知道你在做什么for循环,因为在开始时你增加了我,之后你减少它。这意味着我总是等于1. 这就引出了问题,你想复制一行还是多行? – jvdh

回答

0

你的代码只需要一点点重组,你需要从源表获得正确的数据。

这应该工作:

function main() { 

transfer("1mEluY-_K9oBvbxzASKn25YZ8BgF_naLl0XNitb4zIA8", "Sheet1", "Sheet1"); 

} 
function transfer(targetId, sourceSheetName, targetSheetName) { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sourceSheet = ss.getSheetByName(sourceSheetName); 
    var last = sourceSheet.getActiveRange().getRow(); 
    var data = sourceSheet.getRange(last, 1, 1, 14).getValues(); 

    // copy data 
    var ss2 = SpreadsheetApp.openById(targetId); 
    var targetSheet = ss2.getSheetByName(targetSheetName); 
    //get last row 
    var lastRow = targetSheet.getLastRow(); 
    //write data 
    targetSheet.getRange(lastRow + 1, 1, data.length, data[0].length) 
      .setValues(data); 
    //write "1" into column 13 
    targetSheet.getRange(lastRow + 1, 13, data.length, 1) 
      .setValue("1") 

} 
+0

您好jvdh,此代码给出错误“未找到范围”。 – Mask

+0

可能是因为你没有插入任何参数。为代码添加了一个主要功能,以便于您查看。现在只需更改参数(电子表格 - 键和表名称)。 – jvdh

+0

现在它给了我“超出最大堆栈深度”,任何想法jvdh我做错了什么。 – Mask

相关问题