问题标签 [importrange]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2467 浏览

date - 使用单元格值作为公式中工作表的参考

我有一个包含三张纸的电子表格。两个被调用2012并且2011有一堆相似的数据。最后一张表对数据进行比较。

为了能够选择年份,我使用了一个单元格 (D1),我可以在其中写20112012。然后,公式使用 INDIRECT 函数将此单元格作为参考的一部分。

这不是一个很好的解决方案,并且使公式变得非常冗长和复杂。

有没有更好的方法来做到这一点?

我尝试为计算表创建一个单独的电子表格,并使用 VMERGE(脚本库中的自定义函数)将两张表中的数据一起导入(IMPORTRANGE)一张表中,但这两张表中有很多数据表和导入需要很长时间。任何更改(例如更改年份)也需要很长时间才能重新计算。

0 投票
2 回答
548 浏览

google-sheets - 将 Google 电子表格导入 Google 电子表格

我正在尝试将带有 Google 电子表格查询的 URL 导入另一个 Google 电子表格。所以在我的网页上,我使用这样的网址:https://docs.google.com/a/chisledimages.com/spreadsheet/tq?tqx=out:html&tq=select%20C,D,E,F,G, H,I%20where%20%28A%20contains%20301%29&key=0AuOQkU9HTNwVdG5 创建一个引用指定 Doc 的表并选择某些列,其中 A 列等于我客户的帐号,在本例中为 301。

我想要做的是另一个电子表格,它将自动填充来自该 URL 的数据。我累了 =importdata(" https://docs.google.com/a/chiseledimages.com/spreadsheet/tq?tqx=out:html&tq=select%20C,D,E,F,G,H,I%20where% 20%28A%20contains%20301%29&key=0AuOQkU9HTNwVdG5 ") 但这似乎只是导入了 HTML 而没有用数据填充工作表。我希望能够做到这一点,以便我的客户可以拥有一个始终自动填充其数据的 Google 电子表格,同时无法直接访问包含所有客户数据的原始电子表格。

0 投票
5 回答
6421 浏览

google-apps-script - 解决下拉列表的 importRange 问题的脚本解决方法

我正在分享这个,希望我能解决我面临的这个问题。我正在使用数据验证来获取下拉菜单的值。这些值来自我称为“计算”的工作表中的 Range(“A1:A40”)</p>

由于我有大约 50 个使用相同下拉值和相同模式的电子表格,我只是决定使用 importRange 函数来填充 Sheet(“Calculation”).Range(“A1:A50”) 中的信息。importRange 从我专门用于此目的的单独电子表格中获取列表。

这样做的目的仅仅是因为这是我想要更新和更改的类别列表,并且我希望下拉菜单考虑这些更改,而不必手动更改 50 多个电子表格中的值。

现在理论上这不会有任何问题,但是 importRange 函数是如此的喜怒无常,它会显示随机电子表格发生的 #REF 错误。我看到帖子抱怨同样的问题,所以我放弃了 importRange 将是一个可行的解决方案的希望。

我希望您能提出一个好的解决方法来避免此类问题。

我想到的一种解决方案是让一个脚本将值从一张表复制到所有这些表,并让这个脚本每天工作,但我不知道如何将整个范围从一个电子表格复制到另一个,坦率地说,我不确定这是否解决方案是最好的。

我使用跨电子表格脚本的经验是,从 50 多张表格中的几个单元格获取数据的脚本可能需要 5 分钟以上,并且最终会因超过允许的时间而停止。

0 投票
2 回答
4617 浏览

datetime - 日期和时间有问题

我在 Google 表格中的日期和时间方面遇到了一些问题。我所拥有的是:

电子表格 1 有许多工作表,其中一张称为Sessions。在那张纸上有许多列,显示有关各个培训课程的各种数据。然后我有第二个电子表格发布到用户可以看到的谷歌网站。它只有一个由 QUERY + IMPORTRANGE 填充的工作表,以从Sessions第一个电子表格的选项卡中获取信息。我这样做的原因是我不希望用户能够看到第一个电子表格中的所有不同工作表,也不希望他们看到其中的所有不同列。还有一个原因。我希望查询过滤会话以仅显示将来发生的会话,而不是已经通过的会话。

我在第二张表中提取数据的查询是:

现在效果很好。我想补充的是:

我尝试了许多不同的解决方案,但似乎找不到一个有效的解决方案。

好的....已经取得了一些进展。这并不漂亮,但如果我添加另一张工作表并创建一个包含以下内容的单元格:

然后我可以在查询中使用它:

如果有人可以帮助我在一行中做到这一点,那就太好了。已尝试toDate(Now())以下建议的选项,但这不会返回任何结果,而上面会返回。

有什么想法吗?

0 投票
1 回答
4843 浏览

google-apps-script - 触发函数和 IMPORTRANGE

我有一个 Google Apps 脚本,它将 Google 表单中提交的信息与使用 IMPORTRANGE 函数带入 Google 电子表格的信息进行比较。如果我手动运行该脚本,但如果它从表单提交触发器运行,它会报告它没有从使用 IMPORTRANGE 的单元格中获取正确的信息。

有没有办法解决这个问题,比如我可以添加一个快速功能来强制更新导入范围吗?

我已经尝试添加长达 10 分钟的等待时间,但并没有改变结果。

0 投票
3 回答
9612 浏览

google-apps-script - 如何使用 Google 电子表格中的 ImportRange 函数强制重新计算单元格?

我有一个电子表格目标,它使用 ImportRange 从另一个电子表格源获取一些数据,如

select 子句是子选择与 B3 中的值匹配的数据 - 如果此单元格值发生更改,则“立即”更新导入。

如果有人更改源电子表格中的某些内容,我希望能够强制更新,以便我们“立即”看到它反映在目标中。目前,这只发生在“某个未指定的时间之后”,最多一分钟左右,对于我的目的来说太慢了。

更新:

根据下面的答案和评论,我在 Source 中添加了一个函数 UpdateTarget,该函数从编辑触发器 * 调用:

这似乎更有效,但如果我沿着这条路线走,我也可以有一个脚本将更新的值直接写入目标。

我真的希望目标成为其他用户可以复制的模板,并且可以从主源中提取特定的“实时”数据,我不愿意在源中实现需要在添加新目标时维护的脚本。

我认为我真正需要的是一种重新陈述公式的方法,使其依赖于可以编辑的单元格并触发重新计算 - 但对结果没有影响?

(*旁白:我发现 openByID 函数返回“不允许操作”异常,除非它通过显式触发器调用 - 禁止 onEdit 编辑其他电子表格 -请参阅https://developers.google.com/apps-script/understanding_triggers)。

0 投票
0 回答
576 浏览

google-apps-script - 应用程序脚本:加载电子表格时的竞争条件,提供不正确的数据?

我在应用程序脚本网络应用程序上遇到了一个有趣的问题。在启动时,在处理程序中,代码从电子表格 A 中获取一小部分数据(大约 20 个值),其中getRangeByName. 电子表格 A 并不复杂,但它有 4 页,其中两页是从电子表格 B 加载的(使用importRange)。这两个页面中的每一个都加载了一个ImportRange,每个都包含大约 6000 个单元格。

这就是问题所在。当用户点击 Web 应用 URL 时,很多时候(可能有 25% 的尝试)加载的数据getRangeByName是不正确的。返回的数据#VALUE!不是实际的电子表格数据。应该返回的实际数据是源自链接 ( importRange) 电子表格的文本(人名)。

这通常发生在启动时(在 中doGet),但我也曾在用户单击按钮后看到过这种情况。

它看起来很像getRangeByName在电子表格完成加载数据之前返回importRange。这并不是一个真正的主要问题 - 我刚刚更改了脚本,以便它使用 , 循环getRangeByNamesleep直到给定单元格具有已知的正确值。经过有限的测试,该修复似乎有效。然而,这似乎相当业余。有没有其他人看过这个?这是一个已知问题,是否有“正确”的方法来处理这个问题?

第一次编辑

睡眠/重新读取修复不起作用,我添加了下面的代码。我称之为openById打开电子表格而不是普通的。此代码最初仅包含第二次flush调用。这段代码仍然偶尔会失败,第二次抛出,即使这似乎是不可能的。这里发生的是,GAS(最终)设法在 for 循环中获取正确的电子表格数据,然后退出 for 循环并尝试获取完全相同的数据,而数据现在不正确

第二次编辑

getRangeByName正如评论中所建议的,我在下面的代码中添加了第二次刷新操作,这是在第一次调用之前。没有不同; 代码在第三次调用(在处理程序中)时失败(再次与第二次抛出)。InputSpreadsheetOpen

0 投票
1 回答
3068 浏览

date - 在 IMPORTRANGE 函数的工作表名称中使用 INDIRECT 函数

我想创建一个资源计划电子表格,它使用 Google 表格从月度计划电子表格中导入数据。月度计划电子表格每月有一张表格,名为“2013 年 10 月”、“2013 年 11 月”等。在资源计划电子表格中,我想始终使用 Google 表格的 IMPORTRANGE 函数导入当前月份:

上面的公式将以格式为我提供当前月份/年份,该格式也用于月度计划中的工作表名称,例如“2013 年 10 月”

IMPORTRANGE 函数只是给了我一个#REF!错误。直接在月度计划表中测试,我可以调用另一个单元格的内容:

但是,因此 IMPORTRANGE 函数不喜欢 INDIRECT 函数,或者我做错了什么。

0 投票
1 回答
3241 浏览

google-apps-script - 函数 IMPORTRANGE 未更新

每次打开一个电子表格时,我都想使用 IMPORTRANGE 功能,这样打开的电子表格就可以与另一个电子表格同步。所以,在 A1 中,我放了一个这样的调用公式:

但是这个 IMPORTRANGE 调用仍然是静态的。也就是说,一旦导入,当导入的工作表更改时,数据不会更新。

那么有什么问题呢?我想知道我是否可以在 Google Apps 脚本(类似于 JS 代码)中使用电子表格函数 IMPORTRANGE。

如何在脚本中调用电子表格函数?

0 投票
1 回答
76 浏览

google-sheets - 从以日期命名的外部工作表导入数据

我有 2 张工作表,其中一张在每天结束时更改,并将其数据插入另一个主电子表格,并在日期之后命名工作表。

一周从周一开始,到周日结束,我想访问与该周相关的每个电子表格中一周中每一天的单元格,但我的公式有问题。这是我已经拥有的:

找不到名为 28-04-2014 的工作表