将活动行从一个电子表格复制到另一个电子表格 [英] Copy only active row from one spreadsheet to another

查看:84
本文介绍了将活动行从一个电子表格复制到另一个电子表格的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想创建一个脚本来将工作表的活动行(TIME MACHINE)复制到另一个Google电子表格的表单(数据库)。我也想发送1到复制行的第13行。如果有人能指导我,那将是非常棒的。

 函数endTime(){

transfer(1E3CWWohirN4DD_f_23WWBElYrhqnAs_27crrxowFjFA,TIME MACHINE,TIME MACHINE2)

}

函数转换(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();

//复制数据
var ss2 = SpreadsheetApp.openById(targetId);
var targetSheet = ss2.getSheetByName(targetSheetName);
//获取最后一行
var lastRow = targetSheet.getLastRow();
//写入数据
targetSheet.getRange(lastRow + 1,1,data.length,data [0] .length).setValues(data);
//在第13列写入1
targetSheet.getRange(lastRow + 1,13,data.length,1).setValue(1);
targetSheet.getRange(lastRow + 1,11,data.length,1).setValue(tamma);


解决方案

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



这应该工作:



<$ p $函数main(){

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

$ b函数转移(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();

//复制数据
var ss2 = SpreadsheetApp.openById(targetId);
var targetSheet = ss2.getSheetByName(targetSheetName);
//获取最后一行
var lastRow = targetSheet.getLastRow();
//写入数据
targetSheet.getRange(lastRow + 1,1,data.length,data [0] .length)
.setValues(data);
//在第13列写入1
targetSheet.getRange(lastRow + 1,13,data.length,1)
.setValue(1)

}


I want to create a script to copy the active row of a sheet(TIME MACHINE) to another Google spreadsheet's sheet(Database). I also want to send "1" to the 13 row of the copied row. It would be great if anyone can guide me. The code given below only works to copy within the same spreadsheet.

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);
}

解决方案

your code just needs a little reorganization and you need to get the right data from the source-sheet.

this should work:

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")

}

这篇关于将活动行从一个电子表格复制到另一个电子表格的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆