我正在创建一个“主”谷歌工作表的基础上的谷歌工作表文件文件夹(目前6个文件)。每个工作表的选项卡数量略有不同(有些名称略有不同),但我想循环一个公式以获取每个工作表文件中每个选项卡的值。(例如,fileA有3个选项卡,我想从每个选项卡中获取数据,并在fileB中重复类似的操作,fileB有4个选项卡)。我还想跳过几个命名选项卡。
下面是我的一段代码(2个交错函数):
function getDataFromSpreadsheet(ssID){
var ss = SpreadsheetApp.openById(ssID)
var allsheets = ss.getSheets();
for(var s in allsheets){
var sheet = allsheets[s];
var data = []
if(
(sheet.getName() == "Summary") ||
(sheet.getName() == "Data") ||
(sheet.getName() == "Sheet1") ||
(sheet.getName()== "Sheet2")
) continue;
var lastrownum = sheet.getLastRow();
var values = sheet.getRange("A2:L" + lastrownum).getValues();
data = data.concat(values)
Logger.log(data);
return data;
}
}
但是,这只是从每个文件中的一个选项卡(未命名为“摘要”、“数据”等)中获取/保存数据。
我如何让它循环通过所有工作表文件中的所有(非排除)选项卡???我无法编辑文件,因为这是创建一个自动化系统。
在javascript中使用for... in
迭代数组不是一个好的做法。如果你想了解更多,请参考这篇文章。
但是,代码中有两个问题:
>
你有var数据 = []
在循环中,每次你重新定义数组,因此以前的值被清除。
在循环中使用return
语句,这意味着函数将在第一次迭代中终止,因为返回是每个函数执行的停止点。
我建议你使用for每个:
function getDataFromSpreadsheet(ssID){
const ss = SpreadsheetApp.openById(ssID)
const allsheets = ss.getSheets();
const sheetsToExclude = ["Summary","Data","Sheet1","Sheet2"];
const data = [];
allsheets.forEach(sheet=>{
if(!sheetsToExclude.includes(sheet.getName())){
var lastrownum = sheet.getLastRow();
var values = sheet.getRange("A2:L" + lastrownum).getValues();
data = data.concat(values)
}
});
Logger.log(data);
return data;
}
function getDataFromSpreadsheet(ssID){
var ss = SpreadsheetApp.openById(ssID)
var allsheets = ss.getSheets();
var data = []
for(var s in allsheets){
var sheet = allsheets[s];
if(
(sheet.getName() == "Summary") ||
(sheet.getName() == "Data") ||
(sheet.getName() == "Sheet1") ||
(sheet.getName()== "Sheet2")
) continue;
var lastrownum = sheet.getLastRow();
var values = sheet.getRange("A2:L" + lastrownum).getValues();
data = data.concat(values)
}
Logger.log(data);
return data;
}
我有30张单独的工作表,需要合并成一张有多个选项卡的工作表。我可以使用下面的脚本来完成这项工作,但每次都会创建一个新的工作表。当30张单独的工作表中的一张或全部更新时,我只希望这个脚本更新或重写以前创建的“主工作表”。 我正在寻找一个表,其中包含从每个地区的标签。这将允许我与单独更新的所有信息共享一个主控表。
我不是100%确定是正确的公式,但我尝试的是: 我想修改上面的公式来做以下事情。我有一个多标签谷歌表。只有一个选项卡将所有数据存储为元数据,以填充其他6个选项卡。我将元数据拆分为6个选项卡,但希望避免重复选项卡中的数据。因此,我想创建一个列,显示数据当前的位置(如果已经放置)。以下是一个例子: 主表有以下数据: 将有4个标签,我有相同的列(姓名,电话,地址,电子邮件)。我将把主控表中的数据拆分为这
我正在尝试使用Netty4.1编写一个TCP服务器,它将承载数千个持久连接(TL)。x、 在性能测试期间,我们观察到,如果有几千个到服务器的连接,然后我们得到一个突发的连接,比如说另外几千个连接,这些新的SSL握手会使工作线程长时间处于繁忙状态,这会导致现有连接开始超时。在internet上提供的所有Netty示例中,我看到服务器是这样引导的: 我想知道我是否可以使用两个工人组而不是一个。因此,我
我们正在使用最新版本的spring。 我们正在使用Spring mvc的@Session属性来支持会话范围中的数据... 问题是当我们使用浏览器的多个选项卡时,它不能像预期的那样工作。. 我们有一个搜索页面,允许使用使用多个字段搜索数据库。.我们在会话中使用@Session属性存储结果。 问题:例如,用户给出一些输入和搜索,结果存储在名为“搜索结果”的会话中。 如果用户打开新选项卡并再次使用不同的
为此,我在谷歌上搜索了很多,但不知道怎么做。 我有3家公司为我们提供股票,让我们假设谷歌表单中的公司1、公司2和公司3。 一旦我们添加订单,它将反映在各个公司的谷歌表单订单中。并非所有公司都必须看到所有订单,因为它们可能处理特定项目。 现在每一家公司google sheet都有可用的股票下拉列表,带有(是/否)选项,可以检查特定的订单id是否可行。 我的要求是:如果任何一家公司的股票更新为“是”,
选择Radiobutton时,如果其中两个选项具有相同的元素/值,则两个选项都被选中。 我这样做了,所以我附加到我的列表中的元素是不同的(如CourseInfo(“English1”)、CourseInfo(“English2”)...)我的程序按照我想要的方式工作。只有当元素相同时,它才不起作用。我试图追加到如上所示的列表中,但这并没有解决我的错误。