我有多个谷歌电子表格与预订数据,如预订号码,客户端名称,电子邮件,预订日期等。在所有工作表中,这些列的顺序并不相同。
我想在一个“主”电子表格中更新我所有“源”表中的所有数据。这意味着,一旦添加新行或更新现有行,数据将同步到主电子表格
实现这一目标的最佳方式是什么?Javascript或者是否存在一些现有的Google Sheets插件?
示例表1:快速船预订
示例表2:机场中转预订
主表
非常感谢大家关注这个!
大多数人建议使用“importrange”,但我认为这不适用于我的用例。
我也知道Zapier可以实现这一目标,但支付这么多电击费用会变得非常昂贵。我相信还有另一种解决办法。
我还没有开始使用的任何代码:-/
我希望主数据表中的数据按提交日期和时间排序,如下所示:
作为应用脚本触发器不会被自动工作表更新触发的一种解决方案,您需要使用IMPORTRANGE将数据导入到虚拟工作表中。IMPORTRANGE还将通过自动工作表更新进行检测,同时它能够触发onEdit触发器。
>
删除主电子表格中的所有空行
function changed(e) {
var masterSheet = SpreadsheetApp.getActive().getSheetByName("Sheet1");
if(PropertiesService.getScriptProperties().getKeys().length==0){
PropertiesService.getScriptProperties().setProperty('startRow', 5);
}
var startRow=PropertiesService.getScriptProperties().getProperty('startRow');
var lastRow=masterSheet.getLastRow();
var numRows=lastRow-startRow+1;
var startCol=1;
var numCols=6;
var values=masterSheet.getRange(startRow,startCol,numRows,numCols).getValues();
var FBsheet=SpreadsheetApp.openById('1SzBx5Q9rrlcLGSqD8y5eFE5TX304LfZ7D9mxxrHhfKw').getSheetByName('Sheet1');
var ATsheet=SpreadsheetApp.openById('1IRD8wT5Kmx7h_xP807f4ibWRn8g98RjA-dJXxADXAl0').getSheetByName('Sheet1');
FBsheet.getRange(FBsheet.getLastRow()+1,startCol, numRows, numCols).setValues(values);
var ATlastRow=ATsheet.getLastRow();
for(var i=0;i<numRows;i++){
Logger.log(values[i][1]);
ATsheet.getRange(ATlastRow+1+i,1, 1, 1).setValue(values[i][1]);
ATsheet.getRange(ATlastRow+1+i,2, 1, 1).setValue(values[i][0]);
ATsheet.getRange(ATlastRow+1+i,3, 1, 1).setValue(values[i][3]);
ATsheet.getRange(ATlastRow+1+i,4, 1, 1).setValue(values[i][2]);
ATsheet.getRange(ATlastRow+1+i,5, 1, 1).setValue(values[i][5]);
ATsheet.getRange(ATlastRow+1+i,6, 1, 1).setValue(values[i][4]);
}
PropertiesService.getScriptProperties().setProperty('startRow', lastRow+1);
}
确保使用您的值更改所有电子表格ID和图纸名称。
使用公式的一般步骤如下:
IMPORTRANGE
从源电子表格获取数据到主电子表格笔记:
如果您不熟悉使用IMPORTRANGE
、Google Sheets中的数组和复杂公式,请为每个IMPORTRANGE
使用一个工作表,并删除未使用的列以保存单元格,因为Google Sheets500万单元格限制
如果您喜欢使用脚本,您应该获得电子表格键或URL,然后您可以使用SpreadsheetApp.openById(id)
或SpreadsheetApp.openByUrl(url)
来打开电子表格。然后,您可以使用getVales()
/setVales()
从源电子表格读取/写入值到主电子表格。
工具书类
相关的
可编辑链接-https://docs.google.com/spreadsheets/d/1vrzchTHVwwzc9wgFGmtc_zBsh27CEtE7KOyeNDuLwC0/edit?usp=sharing 发布至网页-https://docs.google.com/spreadsheets/d/e/2PACX-1vRaJd3YpKnemAneU47RI58m7cxQsYFdViFBxJPV
我有一个正在写的剧本,需要一些帮助。 首先,我的脚本应该如何工作。 脚本:用户填写谷歌表单并点击提交。提交后,我的脚本运行并从google工作表中读取我在工作表中操作的一系列数据单元。然后将数据单元格格式化为字符串,并在表单的确认消息中提示。 现在问题来了。 问题:当我提交我对表格的回复时,从表格到表格的一切都很好。当我手动运行代码时,代码工作正常。当我提交表单响应时,事件历史记录会显示触发器并说
我在PHP服务器中使用以下代码更新单元格中的值 运行此请求时,收到以下错误: 在PHP中,一次更新多个不连续单元格的GoogleSheetsAPI请求的正确方法是什么?
我正在测试新的谷歌电子表格,因为我真的需要一个新功能:200张的限制已经取消(更多信息:https://support.google.com/drive/answer/3541068)。 但是,我不能像旧版本那样将电子表格发布到CSV。我去“档案室” 发布的“不支持的功能”文档中未提及此限制,该文档位于:https://support.google.com/drive/answer/3543688
我设法使用以下代码在谷歌驱动器上创建电子表格。现在我想在创建的电子表格中添加新表。 当我创建新的电子表格时,它包含名为Sheet1的默认工作表,但我想重命名该工作表或在电子表格中插入多个工作表
试图复制整个电子表格,但我想没有api可以这样做。 基本上,我正在尝试做以下工作: 有一个电子表格,我想对其进行小的更改。 创建一个新的电子表格,将模板中的所有表格逐个复制到新的电子表格中(电子表格复制会更有效率) 创建新的电子表格工作正常,但从电子表格复制表格不起作用。 尝试了两种方法: 角: 给出以下错误: 对飞行前请求的响应未通过访问控制检查:无“访问控制允许原点” Google Sheet