我寻找一种解决方案,将源电子表格中的特定单元格值从“全部”选项卡复制到另一个电子表格到“目标电子表格”选项卡“全部复制”。每当我改变Cell G10的值时它应该工作。在我输入任何G10值之前,我们会授予对目标表的访问权。
(Source Tab Name是“Sum all:G10” - Sheet有10个不同的Tabs)
(目标标签名称为“CopyData:T12” - 表格有10个不同的标签)
答案 0 :(得分:1)
使用Google Apps中的内置IMPORTRANGE()
功能:
在目标单元格中,键入以下公式
=IMPORTRANGE("FILE_ID_HERE","Sum all!G10:G10")
此功能的语法是
=IMPORTRANGE("FILE_ID","SHEET_NAME!RANGE_START:RANGE_END")
当您第一次输入此功能时,您将在单元格中收到错误。只需单击它并选择“允许”将两张纸链接在一起。即使它是相同的电子表格,也会发生此错误。只要您具有对两者的编辑权限,此功能也可以链接两个单独的电子表格。
我假设您要从同一电子表格文档中复制值,但要复制到位于电子表格不同工作表上的不同单元格。 Google Apps脚本API会调用标签“工作表”和整个文档“电子表格”。
首先,打开脚本编辑器
其次,为onEdit
创建一个函数。
创建一个名为onEdit
的函数将创建一个函数,该函数在每次触发edit
触发器时运行,使用无授权的“简单触发器”。每次用户编辑单元格时,Google表格都会自动发送此事件。函数的参数e
是触发器传递的事件。
function onEdit(e) {
// Get the sheet named "Sum all" from the active spreadsheet (i.e. the one you are editing)
var source = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sum all");
// Returns the active cell
var cell = source .getActiveCell();
// Compare to see if its the right cell you're looking for
// getRow and getColumn methods return integers for the row and column of the cell
// A = 1, B = 2, ... G = 7
if (cell.getRow() == 10 && cell.getColumn() == 7) {
// If its the right cell, copy to the other cell
var target = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("CopyData");
// set the value of the desired cell in the target sheet
target.getRange("T12").setValue(cell.getValue());
}
}
第三,保存脚本
保存脚本,重新加载文件并测试它。
如果您的标签位于不同的电子表格
更改此行:
var target = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("CopyData");
到此:
var target = SpreadsheetApp.openById("FILE_ID").getSheetByName("CopyData");
并插入我写的FILE_ID
目标电子表格的文件ID
您还需要使用“已安装的触发器”,因为简单的触发器无法打开远程电子表格。为此,请更改名称(因此它不再是简单的触发器功能)和follow the steps here