当前位置: 首页 > 知识库问答 >
问题:

在不同的电子表格之间移动一行-Google电子表格

宇文俊明
2023-03-14

我是一名编码等方面的初学者,但我正在努力理解我在做什么以及代码中发生了什么。

我想在不同的电子表格之间划一行。

我在“核心”电子表格中有一个脚本,它在“主页”和“完成”表格链接之间移动一行到电子表格:

function onEdit(event) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var s = event.source.getActiveSheet();
  var r = event.source.getActiveRange();

  if (s.getName() == "Home" && r.getColumn() == 5 && r.getValue() == true) {
    var row = r.getRow();
    var numColumns = s.getLastColumn();
    var targetSheet = ss.getSheetByName("Finished");
    var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
    s.getRange(row, 1, 1, numColumns).moveTo(target);
    s.deleteRow(row);
  }
  else if (s.getName() == "Finished" && r.getColumn() == 5 && r.getValue() == false) {
    var row = r.getRow();
    var numColumns = s.getLastColumn();
    var targetSheet = ss.getSheetByName("Home");
    var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
    s.getRange(row, 1, 1, numColumns).moveTo(target);
    s.deleteRow(row);
  }
}

我搜索了如何将位于“已完成”工作表上的数据移动到另一个名为“数据库”的电子表格链接到电子表格:

function myFunction() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName("Finished");
  var range = sheet.getRange("A1:E2");
  var values = range.getValues();
  var allvals = [];
  for (var i = 0; i < values.length; i++) {
    allvals.push(values[i]) ;
  }

  var dataLength = allvals.length;
  // alert data
  var ui = SpreadsheetApp.getUi();
  // ui.alert( JSON.stringify(allvals) )

  // copy to another Google Spreadsheet
  var newSheet = SpreadsheetApp.openById('1Xn-hrPPr3tQwWMbKdWxHTXcazOqWu1bdHT6A5LZmlD8').getSheets()[0];
  var tmp = "A1:E" + dataLength;
  var newRange = newSheet.getRange(tmp);
  newRange.setValues(values);
}

但我想将数据从表“CORE”/“Finished”传输到表“database”/“DB”,而不重写DB表上已经存在的其他行。我的想法是让电子表格“数据库”成为一个真正的数据库,其他表格将数据放入其中,其他表格使用这些数据。

是否可以像第一个代码那样在不同的电子表格之间移动行?我知道这是不可能使用的。使用函数onEdit()的openById(),但最重要的是移动行,而不重写目标工作表(DB)中已有的其他行。

共有1个答案

宋智明
2023-03-14

使用可安装的onEdit触发器将一行移动到另一个电子表格

这只是使用可安装的onEdit触发器将一行数据从一个电子表格移动到另一个电子表格的示例。如果您想玩它,请不要忘记添加目标电子表格ID。

function onMyEdit(e) {
  //e.source.toast('Entry');
  var sh=e.range.getSheet();
  //Logger.log(JSON.stringify(e));
  if(sh.getName()=='Sheet2' && e.range.columnStart==11 && e.value=="TRUE") {
    //e.source.toast('Access');
    e.range.setValue('FALSE');
    var tss=SpreadsheetApp.openById('SSID');
    var tsh=tss.getSheetByName('Sheet2');
    var v=sh.getRange(e.range.rowStart,1,1,sh.getLastColumn()-1).getValues();
    Logger.log(v);
    tsh.getRange(tsh.getLastRow()+1,1,v.length,v[0].length).setValues(v);
    sh.deleteRow(e.range.rowStart);
  }
}
 类似资料:
  • 我很难找到将多张工作表同步到主电子表格的方法。在我的测试中,我有一个大的电子表格,上面有5个城市的地址。我正在尝试为每个城市创建一个电子表格,并能够在任何一个表格中更改数据时同步数据。因此,我将管理总体数据,5张电子表格中的每一张都将分配给其他人。这样,他们就可以在不访问所有数据的情况下更新工作表。使用内置查询或导入功能的问题是,如果用户在“城市”电子表格上进行更改,它将破坏该表格,因为数据被引用

  • 我已经通过谷歌官方文档《开发者指南》API中提到的一个简单Java代码成功地在我的Google Drive帐户的现有电子表格中创建了一个新的工作表,但我想通过Java代码在我的Google Drive帐户中创建一个新的电子表格。在链接中,他们没有提到这方面的任何示例代码。我已经在Spreadservice类中看到了不同的可用方法。 如何使用Google电子表格API实现这一点?

  • 我想使用谷歌电子表格允许人们可视化和编辑存储在mongob集合中的表的数据。 数据由web服务创建,每天创建大约50个mongodb集合。(数据本质上是表格式的:集合的所有文档都是具有相同键的平面键值对象。) 现在,我想让公司内部的人使用谷歌电子表格可视化和编辑表格的数据。 我正在寻找保持mongobd和Google Spreasheets同步的最佳方法。 我看了Google Sheets API

  • 人若自洁,脱离卑贱的事,就必作贵重的器皿,成为圣洁,合乎主用,预备行各样的善事。你要逃避少年的私欲,同那清心祷告主的人追求公义、信德、仁爱、和平。惟有那愚拙无学问的辩论,总要弃绝,因为知道这等事是起争竞的。(2 TIMOTHY 2:21-23) 电子表格 一提到电子表格,可能立刻想到的是excel。殊不知,电子表格“历史悠久”,比Word要长久多了。根据维基百科的记载整理一个简史: VisiCal

  • 利用MVVM,很多非常复杂的前端页面编写起来就非常容易了。这得益于我们把注意力放在Model的结构上,而不怎么关心DOM的操作。 本节我们演示如何利用Vue快速创建一个在线电子表格: 首先,我们定义Model的结构,它的主要数据就是一个二维数组,每个单元格用一个JavaScript对象表示: data: { title: 'New Sheet', header: [ // 对应首行

  • 本章介绍如何使用Java创建电子表格并对其进行操作。 电子表格是Excel文件中的页面; 它包含具有特定名称的行和列。 完成本章后,您将能够创建电子表格并对其执行读取操作。 创建电子表格 首先,让我们使用前面章节中讨论的引用类创建一个电子表格。 按照上一章的说法,首先创建一个工作簿,然后我们可以继续创建一个工作表。 以下代码段用于创建电子表格。 //Create Blank workbook XS