使用应用脚本将电子表格行复制到另一列

2023-12-27

我一直在寻找这个问题的答案,但一直没有任何运气。我需要做的是使用应用程序脚本将给定行中的所有单元格(即使是空白单元格也可以)复制到不同工作表上的列。能够对单个列执行一系列行也很棒,但我会接受任何解决方案。如果不可能的话,也很高兴知道这一点。

我目前正在使用公式,但由于我要处理的数据量很大,我在单个电子表格中遇到了公式限制。

Thanks

我从帖子中提取了这个数组示例,但我不知道如何将其应用到我的情况?

 function transposeArray(array){
    var result = [];
    for(var row = 0; row < array.length; row++){ // Loop over rows
      for(var col = 0; col < array[row].length; col++){ // Loop over columns
        result[row][col] = array[col][row]; // Rotate
      }
    }
    return result;
}

EDIT:

我最终只是使用下面的代码来完成我想要的事情。它逐行进行转置,然后将值设置在先前条目下方的同一列(第二页上的 B2)中。

function transpose(a)
{
  return Object.keys(a[0]).map(function (c) { return a.map(function (r) { return r[c];     }); });
}

function betaUpdate(fromRange,toAnchor) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var source = ss.getSheets()[0];
  var destination = ss.getSheets()[1];

////////////////////////////////////////////////////////////////////   July 1
//Row 1
  var fromRange = source.getRange("B5:AD5");  
  var toAnchor = destination.getRange("B2");
  var data = fromRange.getValues();
  var flip = transpose(data);
  var toRange = toAnchor.offset(0, 0, flip.length, flip[0].length);
  toRange.setValues(flip);

//Row2
  var fromRange1 = source.getRange("B6:AD6");  
  var toAnchor1 = destination.getRange("B2");
  var data1 = fromRange1.getValues();
  var flip1 = transpose(data1);
///Offset must be set to the length of previous row 
  var toRange1 = toAnchor1.offset(28, 0, flip1.length, flip1[0].length);
  toRange1.setValues(flip1);

//Row3
  var fromRange2 = source.getRange("B7:AD7");  
  var toAnchor2 = destination.getRange("B2");
  var data2 = fromRange2.getValues();
  var flip2 = transpose(data2);
///Offset must be set to the length of previous row
  var toRange2 = toAnchor2.offset(56, 0, flip2.length, flip2[0].length);
  toRange2.setValues(flip2);

};

我们正在寻找一个允许我们执行以下操作的函数:

function test_flipFlopAndFly() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet1 = ss.getSheets()[0];
  var sheet2 = ss.getSheets()[1];
  var fromRange = sheet1.getDataRange();  // Everything on sheet 1
  var toAnchor = sheet2.getRange("A1");   // Top Left corner of sheet 2

  flipFlopAndFly(fromRange,toAnchor);    // <<<<<<< Make that work!
}

根据 Serge 的建议,这是一个简单版本flipFlopAndFly()实用程序,没有错误检查。你可以看到没有什么太多的。顺便说一句,我正在使用transpose()函数来自这个答案 https://stackoverflow.com/a/16705104/1677912.

/**
 * Transpose and copy data in fromRange to another range
 * whose top-left corner is at toAnchor.
 *
 * @param {Range} fromRange Range containing source data
 * @param {Range} toAnchor  Top Left corner of Range to
 *                          receive transposed data
 */
function flipFlopAndFly(fromRange,toAnchor) {
  var data = fromRange.getValues();
  var flip = transpose(data);
  var toRange = toAnchor.offset(0, 0, flip.length, flip[0].length);
  toRange.setValues(flip);
}

通过错误检查:

/**
 * Transpose and copy data in fromRange to another range
 * whose top-left corner is at toAnchor.
 *
 * @param {Range} fromRange Range containing source data
 * @param {Range} toAnchor  Start of Range to receive transposed data
 */
function flipFlopAndFly(fromRange,toAnchor) {
  if (arguments.length !== 2) throw new Error ("missing paramater(s)");
  try {
    // Test that arguments are both Ranges.
    fromRange.getDataTable();
    toAnchor.getDataTable();
  }
  catch (e) {
    throw new Error ("parameters must be type Range");
  }

  var data = fromRange.getValues();
  var flip = transpose(data);
  var toRange = toAnchor.offset(0, 0, flip.length, flip[0].length);
  toRange.setValues(flip);
}

编辑 - 通过附加多行创建单列

无需分解实用函数来完成您想要做的事情,您只需为转置数据提供适当的锚点即可。

如果可以的话,我鼓励您找到使用固定范围的方法 - 这将使您的脚本更适应工作表中的更改。

function betaUpdate(fromRange,toAnchor) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var source = ss.getSheets()[0];
  var destination = ss.getSheets()[1];

//Row 1
  flipFlopAndFly(source.getRange("B5:AD5"),
                 destination.getRange("B2"));

//Row2
  flipFlopAndFly(source.getRange("B6:AD6"),
                 destination.getRange("B2").offset(28, 0));

//Row3
  flipFlopAndFly(source.getRange("B7:AD7"),
                 destination.getRange("B2").offset(56, 0));
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用应用脚本将电子表格行复制到另一列 的相关文章

  • 将“密码”类型添加到 Google Apps 脚本输入框

    是否可以将 密码 类型分配给 Google Apps 脚本输入框 以便不显示文本 以下工作正常 但输入字段是一个简单的文本框 并显示文本而不是 Browser inputBox Please enter your password 我有一个
  • 如何使用 Google Apps 脚本编辑现有的 Google 表单项(问题)

    我有一个谷歌脚本来构建谷歌表单 该脚本使用包含问题和相应选项的电子表格填写表单 表格中显示的问题需要定期更新 我希望通过更改电子表格中的问题来更新表单中的问题 如下所示 I use onOpen 对于脚本 以便每次访问表单时 脚本都会重建最
  • Gmail 菜单按钮

    我希望编写一个 Google 脚本来存档所有早于某个日期的电子邮件 在该脚本中 我将添加一个自定义按钮 就像在 Google Sheets 中一样 以便我可以运行我的脚本 Google 脚本中是否存在向 Gmail 中的 UI 添加菜单 按
  • 谷歌表格根据今天的日期隐藏行

    在 Google Sheets 中 当 A 列中的日期等于或早于今天的日期时 我需要一个脚本来自动隐藏工作表 1 中的行 因此 如果今天是 2018 年 8 月 29 日 单元格 A3 中的日期是 2018 年 8 月 28 日 则第 3
  • Google Apps 脚本是否允许任何类型的内省?

    Google Apps 脚本可以学习自己的名称吗 或者它的ID 它可以获取其包含文件夹的 ID 吗 它可以了解它在文件夹层次结构中的位置吗 脚本 A 可以获取 设置脚本 B 的属性吗 脚本 A 可以编辑脚本 B 使用的库的任何方面吗 脚本
  • 通过 Apps 脚本强制刷新公式

    有时 更改单元格的值时 电子表格中的公式不会自动刷新 并且单元格上会出现注释以选择该单元格 然后按 CTRL SHIFT E 强制重新加载公式 我想从 Apps 脚本调用此重新加载函数 有没有办法用 Apps 脚本来做到这一点 我尝试了 S
  • 将按钮添加到 Google 表格并在单击时为单元格设置值

    我是 Google 脚本的新手 我有一个包含 5 列的 Google 表格 在每一列上我需要一个按钮 带有文本1 2 3 4 5 在每个按钮上单击我需要将按钮文本设置为相应的单元格并隐藏单击的按钮 是否可以 您可以插入看起来像按钮的图像 然
  • 谷歌电子表格中的“MMMM yy”日期

    我有一个谷歌电子表格 其中我想要一个仅包含月份和年份名称的日期 例如September 2011 而且我还希望月份和年份能够轻松更改 有没有办法获得自定义日期格式来做到这一点 我发现我可以这样做 TEXT 40295 MMMM yy 但是日
  • 如果行值存在于另一个工作表中,则将其复制到新工作表

    我是 Google 脚本新手 需要创建一个脚本 我找到了这个question https stackoverflow com questions 22008331 google script delete row if a value in
  • 如何像函数一样使用 google.script.run

    在 Google Apps 脚本中 我有以下脚本 function doGet return HtmlService createHtmlOutputFromFile mypage function writeSomething retur
  • 当 Google 任务标记为“已完成”时如何触发 Google 脚本

    Google Apps 脚本允许由各种事件触发脚本 看here https developers google com apps script guides triggers 当用户将任务标记为已完成 在 Google 任务中 时 我想更新
  • 自动递增 ID 号 Google Apps 脚本

    我想在向工作表添加新值时自动增加 ID 我尝试从当前的 ID 列表创建一个列表 但它只计数到 5 因此当自动递增时 它只会到达一个点并为每个输入保存该数字 以下是我尝试获取 ID 号列表的方法 但它没有获取整个列表 我缺少什么 var ss
  • 为什么我们使用 SpreadsheetApp.flush()?

    我的理解是 flush https developers google com apps script reference spreadsheet spreadsheet app flush有助于在功能发生时执行这些功能 而无需将它们捆绑在
  • 如何使用 Google Sheets (v4) API 修改依赖于特定单元格的特定数据行?

    我想找到一种使用 Google API 根据我提供的条件修改特定行数据的方法 类似于 SQL 的东西 UPDATE Customers SET ContactName Alfred Schmidt City Frankfurt WHERE
  • 使用 Google Apps 脚本处理数组中输入元素中的多个文件

    我有一个表单 允许从下拉列表中选择一个项目并上传文件 项目的名称和 ID 保存在电子表格文档中 适用于一个文件 但我想上传多个文件 你能帮我修改一下脚本吗 HTML 部分如下所示 div class col md 4 col sm 6 di
  • 谷歌表格在一行上的不同单元格范围上添加时间戳

    我一直试图在与该行上两个不同单元格范围相对应的行上放置两个时间戳 我已成功使用此脚本对行上的任何更改 第 5 列之后 添加时间戳 我想要的是 如果单元格范围 F 到 L 发生任何更改 则在 E 列中放置一个时间戳 然后 如果从 N 列到 Z
  • 重命名带有“完整工作表”图表的工作表会导致电子表格重新加载

    Google 表格允许将图表移动到自己的表格中 不过 谷歌脚本似乎无法重命名这些工作表 而不会使电子表格崩溃并强制其重新加载 要明白我的意思 请尝试以下操作 1 创建新的电子表格并在其中放入一些数据 2 使用数据创建任何类型的图表 3 编辑
  • Google Apps 脚本中 $.ajax() 的服务器端等效项是什么?

    我想在 Google App 脚本中从服务器端代码执行 HTTP 请求Authorization标头 是否有用于发送 HTTP 请求的 App Script API Google Apps 脚本中的这段代码相当于什么 var api URL
  • 有没有办法将 Google 文档分割成多个 PDF?

    我想在 Google Scripts VBA 代码中复制我为 Word 文档编写的代码 基本上 它通过搜索我插入文档中的标签 将文档 切片 为多个 PDF 文件 目的是允许合唱团使用 forScore 管理乐谱的应用程序 在切片点插入先前注
  • 根据日期自动对数据进行排序

    我正在尝试使我的电子表格根据日期自动对数据进行排序 我附上了我正在使用的电子表格的照片 您会注意到 G 列中有一个工作日公式 目前 一旦我更新了配药日期 重新订购日期就会根据公式进行更新 基于安排的工作日 然后我对 G 列使用 SORT R

随机推荐

  • python oauthlib:在转义ValueError“只有unicode对象是可转义的”

    我在用着python social auth从我的 Django 应用程序登录社交网络 在我的本地计算机上 一切正常 但是当我部署到服务器时 出现以下错误 oauthlib oauth1 rfc5849 utils in escape Va
  • “始终显示选择”在列表模式下的 CListCtrl 上不起作用

    我希望用户能够在 CListCtrl 中选择项目 然后单击按钮对这些项目进行操作 但是 当焦点从列表中丢失时 即使我将 始终显示选择 设置为 true 也不再显示选择 这种情况在对话框测试工具和我编译的应用程序中都会发生 我使用列表模式 没
  • MySQL 中的 timestampdiff() 相当于 SQL Server 中的 datediff() 吗?

    我正在致力于将功能从 SQL Server 2000 迁移到 MySQL 在 SQL Server 2000 中执行以下语句 输出为 109 SELECT DATEDIFF wk 2012 09 01 2014 10 01 AS NoOfW
  • ajax 与 django 表单

    我可以用 django 添加 ajax 代码吗 我创建了一个简单的注册表单 有 5 个字段 我希望在不同页面但在单个窗口中显示每个字段 这意味着通过使用下一个按钮 5 个页面要显示在一个窗口中 同时我想将每个页面的所有内容添加到我的数据库中
  • 使用 boost 进程获取 shell 命令的标准输出

    我正在尝试在 C 中实现一个函数 该函数运行 shell 命令并返回退出代码 stdout and stderr 我正在使用Boost process library std vector
  • NodeJS、Express,为什么我应该使用 app.enable('trust proxy');

    我需要将 http 重定向到 https 并找到以下代码 app enable trust proxy app use req res next gt if req secure next else res redirect https r
  • 替换 Android 设备上的默认 GPS 信号提供商

    我想用我自己的坐标源替换 Android 手机上的默认 GPS 位置提供程序 是否有任何层 API 库 提供程序允许替换为我的信号提供程序而不是内置硬件 GPS 或从外部插件读取 它应该允许所有依赖 GPS 服务的应用程序接收我的信号而不是
  • Eclipse C 宏自动格式化

    我在 Eclipse CDT 中使用自动格式化时遇到问题 在大多数情况下 它工作得很好 但它似乎坚持将宏调用后的分号放在单独的行上 这是一个错误还是我错误检查了导致此问题的格式设置组合 该问题已在 Eclipse CDT 的更高版本中得到修
  • 在 WPF 树视图中对数据进行分组

    我想创建一个 WPFTreeView有两个分组选项 单选按钮 因此 数据将以两种不同的方式分组为 2 级层次结构 最低级别是实际数据项 组只是表示数据的一种方式 以便于理解 他们还可以按组 复选框 选择项目 但我已经弄清楚了该部分 例如如果
  • 使用 Python 的字符串子序列内核和 SVM

    如何使用子序列内核 SSK Lodhi 2002 在 Python 中训练 SVM 支持向量机 我找到了使用幕府将军库的解决方案 您必须从提交安装它0891f5a38bcb https code google com p shogun to
  • 类型错误:用户不是构造函数 - Mongoose Node.js Express-Validator

    我收到这个错误 用户不是构造函数类型错误 我无法找出代码中有什么问题 任何建议表示赞赏 路线 user js Initialised user js into users js var User require models user if
  • AES 256 解密 - IV 可以安全共享吗?

    继这个问题 https stackoverflow com questions 992019 java 256 bit aes password based encryption及其答案 我正在创建一个应用程序 给定密码字符串 将转换明文并
  • iOS:实例变量的其他替代方案?

    我有一个别人写的项目 我接手了 希望能把app做得更好 我遇到了一个问题 从一个班级 我写 customclass variable CustomClass是另一个类 variable是一个属性 并且是int类型 我获取了此类中变量的值 但
  • diff 返回相同文件的整个文件

    我有一个包含 git 存储库的网站 我克隆了存储库 以便我可以在一个目录中进行开发 然后推送到存储库 然后拉入 live prod 目录 如果有的话 我会对更好的方法的建议感兴趣 但这超出了本问题的范围 我在 live 目录中执行了以下操作
  • 在 Edittext 中复制并粘贴图像

    I am on the project RichTextEditor and completed almost all functionality I can insert image and can save the file with
  • 如何控制 iPhone 翻转视图动画过渡期间的背景颜色?

    我正在进行一些非常标准的翻转动作 UIView beginAnimations swapScreens context nil UIView setAnimationTransition UIViewAnimationTransitionF
  • Silverstripe 一页上有多个用户表单

    我正在尝试创建一个页面 该页面将在选项卡式视图中显示多个用户表单 例如基本联系表 索取报价表等 我以为我可以创建一个新的页面类型并循环子级以显示表单 但是 Form 变量没有呈现表单 div h2 Title h2 Form div 我是否
  • 删除精度较低的重复项

    我有一个带有字符串列和浮动列的 pandas DataFrame 我想使用drop duplicates删除重复项 有些重复项并不完全相同 因为小数点后位有一些细微的差异 如何删除精度较低的重复项 Example import pandas
  • 如何禁用 NSTableVIew 中的排序?

    我有一个 NSTableView 每当我单击特定的标题列时 表中的数据就会反转或颠倒排序 我检查过NSTableView也NSTableColumn但找不到任何禁用此功能的方法 如果有人可以帮助在单击特定列的标题时禁用此排序 我将不胜感激
  • 使用应用脚本将电子表格行复制到另一列

    我一直在寻找这个问题的答案 但一直没有任何运气 我需要做的是使用应用程序脚本将给定行中的所有单元格 即使是空白单元格也可以 复制到不同工作表上的列 能够对单个列执行一系列行也很棒 但我会接受任何解决方案 如果不可能的话 也很高兴知道这一点