Google表格:根据单元格的值将一行数据移动到另一张表格

瓦特恩公司

我试图根据单元格值将数据行移动到另一张工作表我使用在Internet上搜索后发现的这段代码。

/**
 * Moves row of data to another spreadsheet based on criteria in column 6 to sheet with same name as the value in column 4.
*/
 
function onEdit(e) {
  // see Sheet event objects docs
  // https://developers.google.com/apps-script/guides/triggers/events#google_sheets_events
  var ss = e.source;
  var s = ss.getActiveSheet();
  var r = e.range;
   
  // to let you modify where the action and move columns are in the form responses sheet
  var actionCol = 6;
  var nameCol = 4;
 
  // Get the row and column of the active cell.
  var rowIndex = r.getRowIndex();
  var colIndex = r.getColumnIndex();
   
  // Get the number of columns in the active sheet.
  // -1 to drop our action/status column
  var colNumber = s.getLastColumn()-1;
   
  // if our action/status col is changed to ok do stuff
  if (e.value == "ok" && colIndex == actionCol) {
    // get our target sheet name - in this example we are using the priority column
    var targetSheet = s.getRange(rowIndex, nameCol).getValue();
    // if the sheet exists do more stuff
    if (ss.getSheetByName(targetSheet)) { 
      // set our target sheet and target range
      var targetSheet = ss.getSheetByName(targetSheet);
      var targetRange = targetSheet.getRange(targetSheet.getLastRow()+1, 1, 1, colNumber);
      // get our source range/row
      var sourceRange = s.getRange(rowIndex, 1, 1, colNumber);
      // new sheets says: 'Cannot cut from form data. Use copy instead.' 
      sourceRange.copyTo(targetRange);
      // ..but we can still delete the row after
      s.deleteRow(rowIndex);
      // or you might want to keep but note move e.g. r.setValue("moved");
    }
  }
}

此代码可以成功地在同一电子表格的其他选项卡上传输数据行。但是,如果我想将数据移动到不同的电子表格中,它将无法正常工作。如果要将数据行移动到其他电子表格,该如何编辑该代码,使其也能正常工作?

我需要一些建议!谢谢!!

更新1

我创建了该触发代码:

function myFunction() {
  
}
function createSpreadsheetOpenTrigger() {
  var ss = SpreadsheetApp.getActive();
  ScriptApp.newTrigger('myFunction')
      .forSpreadsheet(ss)
      .onEdit()
      .create();
}

所以我以许可的权限运行它

然后第二个

/**
 * Moves row of data to another spreadsheet based on criteria in column 6 to sheet with same name as the value in column 4.
*/
 
function onEdit(e) {
  // see Sheet event objects docs
  // https://developers.google.com/apps-script/guides/triggers/events#google_sheets_events
  var ss = e.source;
  var s = ss.getActiveSheet();
  var r = e.range;
   
  // to let you modify where the action and move columns are in the form responses sheet
  var actionCol = 6;
  var nameCol = 4;
 
  // Get the row and column of the active cell.
  var rowIndex = r.getRowIndex();
  var colIndex = r.getColumnIndex();
   
  // Get the number of columns in the active sheet.
  // -1 to drop our action/status column
  var colNumber = s.getLastColumn()-1;
   
  // if our action/status col is changed to ok do stuff
  var targetss = SpreadsheetApp.openById("1S8KcrvzjvRxrABXa7A3W7QcLsCyag7DAHnWXgBjiaMc");
  if (e.value == "ok" && colIndex == actionCol) {
    // get our target sheet name - in this example we are using the priority column
    var targetSheet = s.getRange(rowIndex, nameCol).getValue();
    // if the sheet exists do more stuff
    if (ss.getSheetByName(targetSheet)) { 
      // set our target sheet and target range
      var targetSheet = targetss.getSheetByName(targetSheet);
      var targetRange = targetSheet.getRange(targetSheet.getLastRow()+1, 1, 1, colNumber);
      // get our source range/row
      var sourceRange = s.getRange(rowIndex, 1, 1, colNumber);
      // new sheets says: 'Cannot cut from form data. Use copy instead.' 
      var sourceData = sourceRange.getValues();
      targetRange.setValues(sourceData);
      // ..but we can still delete the row after
      s.deleteRow(rowIndex);
      // or you might want to keep but note move e.g. r.setValue("moved");
    }
  }
}

卡洛斯·M(Carlos M.)所做的更改。

我再次运行该文件并获得了大权限。

我说的对吗?

更新2

    function createSpreadsheetOpenTrigger() {
  var ss = SpreadsheetApp.getActive();
  ScriptApp.newTrigger('myFunction')
      .forSpreadsheet(ss)
      .onEdit()
      .create();
}

function myFunction(e) {
  // see Sheet event objects docs
  // https://developers.google.com/apps-script/guides/triggers/events#google_sheets_events
  var ss = e.source;
  var s = ss.getActiveSheet();
  var r = e.range;
   
  // to let you modify where the action and move columns are in the form responses sheet
  var actionCol = 6;
  var nameCol = 4;
 
  // Get the row and column of the active cell.
  var rowIndex = r.getRowIndex();
  var colIndex = r.getColumnIndex();
   
  // Get the number of columns in the active sheet.
  // -1 to drop our action/status column
  var colNumber = s.getLastColumn()-1;
  // if our action/status col is changed to ok do stuff
  var targetss = SpreadsheetApp.openById("1S8KcrvzjvRxrABXa7A3W7QcLsCyag7DAHnWXgBjiaMc");
  if (e.value == "ok" && colIndex == actionCol) {
    // get our target sheet name - in this example we are using the priority column
    var targetSheet = s.getRange(rowIndex, nameCol).getValue();
    // if the sheet exists do more stuff
    if (ss.getSheetByName(targetSheet)) { 
      // set our target sheet and target range
      var targetSheet = targetss.getSheetByName(targetSheet);
      var targetRange = targetSheet.getRange(targetSheet.getLastRow()+1, 1, 1, colNumber);
      // get our source range/row
      var sourceRange = s.getRange(rowIndex, 1, 1, colNumber);
      // new sheets says: 'Cannot cut from form data. Use copy instead.' 
      var sourceData = sourceRange.getValues();
      targetRange.setValues(sourceData);
      // ..but we can still delete the row after
      s.deleteRow(rowIndex);
      // or you might want to keep but note move e.g. r.setValue("moved");
    }
  }
}

我保存并运行它,但是它不起作用。我在做什么错?

更新3

那是原始的电子表格

我想在F列中说“确定”时转移第3行。原始电子表格

那就是我希望该行数据去的电子表格。

电子表格我希望数据进入(TAB m1)

那就是我在原始电子表格的脚本编辑器中编写的脚本。

脚本

脚本

这是我单击运行时的日志结果

结果

它没有显示任何错误,但是该行未在其他电子表格中传输。我的代码有错误吗?

卡洛斯·M

解决方案:

  1. 您需要一个可安装的触发器来授权对两个电子表格的编辑访问。您可以检查文档以创建在编辑时运行的触发器。

样本:

function createSpreadsheetOpenTrigger() {
  var ss = SpreadsheetApp.getActive();
  ScriptApp.newTrigger('myFunction')
      .forSpreadsheet(ss)
      .onEdit()
      .create();
}

手动运行此功能以创建触发器。

  1. 使用SpreadsheetApp.openById()打开你的目标的电子表格。然后,您可以定义与源电子表格类似的范围。

样本:

function myFunction(e) {
  // see Sheet event objects docs
  // https://developers.google.com/apps-script/guides/triggers/events#google_sheets_events
  var ss = e.source;
  var s = ss.getActiveSheet();
  var r = e.range;
   
  // to let you modify where the action and move columns are in the form responses sheet
  var actionCol = 6;
  var nameCol = 4;
 
  // Get the row and column of the active cell.
  var rowIndex = r.getRowIndex();
  var colIndex = r.getColumnIndex();
   
  // Get the number of columns in the active sheet.
  // -1 to drop our action/status column
  var colNumber = s.getLastColumn()-1;
  // if our action/status col is changed to ok do stuff
  var targetss = SpreadsheetApp.openById("TARGET_SS_ID_HERE");
  if (e.value == "ok" && colIndex == actionCol) {
    // get our target sheet name - in this example we are using the priority column
    var targetSheet = s.getRange(rowIndex, nameCol).getValue();
    // if the sheet exists do more stuff
    if (targetss.getSheetByName(targetSheet)) { 
      // set our target sheet and target range
      var targetSheet = targetss.getSheetByName(targetSheet);
      var targetRange = targetSheet.getRange(targetSheet.getLastRow()+1, 1, 1, colNumber);
      // get our source range/row
      var sourceRange = s.getRange(rowIndex, 1, 1, colNumber);
      // new sheets says: 'Cannot cut from form data. Use copy instead.' 
      var sourceData = sourceRange.getValues();
      targetRange.setValues(sourceData);
      // ..but we can still delete the row after
      s.deleteRow(rowIndex);
      // or you might want to keep but note move e.g. r.setValue("moved");
    }
  }
}

使用此链接中的ID替换TARGET_SS_ID_HERE:https : //docs.google.com/spreadsheets/d/ < ss_ID > / edit#gid = 0

样本输出:

在此处输入图片说明

将F列的“ ok”设置为两行后:

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Google表格:根据单元格的值将一行数据移动到另一张表格

来自分类Dev

自动执行Google表格(Google脚本),以便在单元格日期过去时将行移动到另一张表格中

来自分类Dev

将一张表格中的表格数据引用到另一张表格中的单元格

来自分类Dev

Google表格-如何根据多个条件将一行移到另一张表格?

来自分类Dev

如何将一行数据与Google表格中另一张表的每一行数据进行比较?

来自分类Dev

如何将一行数据与Google表格中另一张表的每一行数据进行比较?

来自分类Dev

添加另一行并根据另一张纸的单元格值粘贴值

来自分类Dev

excel根据单元格值将行复制到另一张表

来自分类Dev

Excel-将包含空单元格的行移动到另一张工作表

来自分类Dev

Google表格脚本,用于将一张工作表上的一些单元格值传递到新的工作表行

来自分类Dev

Google表格公式-将多行和列查询到另一张表格的一个单元格中

来自分类Dev

将特定单元格从最后一行移动到新电子表格

来自分类Dev

根据单元格值将特定数据(不是整行!)复制到另一张表

来自分类Dev

使用脚本将特定文本从一个单元格移动到 Google 表格中的另一个单元格

来自分类Dev

Excel宏可基于单元格值将一行中的选定单元格从一张纸复制到另一张纸

来自分类Dev

自动从另一张表格中填充Excel单元格

来自分类Dev

在Google表格中,如何根据另一个单元格的值进行过滤?

来自分类Dev

根据单元格输入将行信息从一张纸复制到另一张纸

来自分类Dev

返回并合并 Google 表格中一行中的所有单元格值

来自分类Dev

Google脚本的实现,用于将行从一张纸移动到另一张纸

来自分类Dev

MySQL将单元格从一张表更新到另一张

来自分类Dev

根据Google表格中的日期,将2种表格中的数据合并到一张表格中

来自分类Dev

如何在不重写与之链接的所有公式的情况下将输入单元格移动到另一张工作表?

来自分类Dev

将值粘贴到另一张工作表中的匹配单元格中

来自分类Dev

如何将表格从一张纸移动到另一张纸,同时将其重新排列为特定格式?

来自分类Dev

我想根据所选单元格获取电子表格的一行的值

来自分类Dev

将一行从一张纸移动到另一张纸时的data_stamp脚本

来自分类Dev

Google表格-根据公式中的另一个单元格值设置行号吗?

来自分类Dev

将数据从1张纸拉到另一张纸而不拉空单元格为0

Related 相关文章

  1. 1

    Google表格:根据单元格的值将一行数据移动到另一张表格

  2. 2

    自动执行Google表格(Google脚本),以便在单元格日期过去时将行移动到另一张表格中

  3. 3

    将一张表格中的表格数据引用到另一张表格中的单元格

  4. 4

    Google表格-如何根据多个条件将一行移到另一张表格?

  5. 5

    如何将一行数据与Google表格中另一张表的每一行数据进行比较?

  6. 6

    如何将一行数据与Google表格中另一张表的每一行数据进行比较?

  7. 7

    添加另一行并根据另一张纸的单元格值粘贴值

  8. 8

    excel根据单元格值将行复制到另一张表

  9. 9

    Excel-将包含空单元格的行移动到另一张工作表

  10. 10

    Google表格脚本,用于将一张工作表上的一些单元格值传递到新的工作表行

  11. 11

    Google表格公式-将多行和列查询到另一张表格的一个单元格中

  12. 12

    将特定单元格从最后一行移动到新电子表格

  13. 13

    根据单元格值将特定数据(不是整行!)复制到另一张表

  14. 14

    使用脚本将特定文本从一个单元格移动到 Google 表格中的另一个单元格

  15. 15

    Excel宏可基于单元格值将一行中的选定单元格从一张纸复制到另一张纸

  16. 16

    自动从另一张表格中填充Excel单元格

  17. 17

    在Google表格中,如何根据另一个单元格的值进行过滤?

  18. 18

    根据单元格输入将行信息从一张纸复制到另一张纸

  19. 19

    返回并合并 Google 表格中一行中的所有单元格值

  20. 20

    Google脚本的实现,用于将行从一张纸移动到另一张纸

  21. 21

    MySQL将单元格从一张表更新到另一张

  22. 22

    根据Google表格中的日期,将2种表格中的数据合并到一张表格中

  23. 23

    如何在不重写与之链接的所有公式的情况下将输入单元格移动到另一张工作表?

  24. 24

    将值粘贴到另一张工作表中的匹配单元格中

  25. 25

    如何将表格从一张纸移动到另一张纸,同时将其重新排列为特定格式?

  26. 26

    我想根据所选单元格获取电子表格的一行的值

  27. 27

    将一行从一张纸移动到另一张纸时的data_stamp脚本

  28. 28

    Google表格-根据公式中的另一个单元格值设置行号吗?

  29. 29

    将数据从1张纸拉到另一张纸而不拉空单元格为0

热门标签

归档