问题标签 [google-apps-script-runtime]

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 回答
1056 浏览

google-apps-script - 错误:异常:您无权调用 Session.getActiveUser。所需权限:https://www.googleapis.com/auth/userinfo.email

我最近将我的一个项目迁移到 appscript 的新 V8 引擎。我遇到了这个异常

例外:您无权调用 Session.getActiveUser。所需权限: https ://www.googleapis.com/auth/userinfo.email..Session.getActiveUser 未经许可 无法访问

任何想法,将不胜感激

0 投票
1 回答
435 浏览

google-apps-script - 将 Google Apps 脚本项目切换到 V8 运行时时的范围问题

由于 Google Apps Script 强行将“Rhino”推送到“V8”引擎,应用程序正在自动从 Rhino 迁移到 V8。所以我们的应用程序正在询问需要在“ appscript.json ”文件中手动指定的“范围”。

请检查下图:

应用问题

文件 :-

代码.gs

当我像下面这样更新时,它工作正常。

应用脚本.json

我们担心的是我们有超过 100 个生产应用程序,我们不能每次都手动更新。你能帮助我们如何在生产中没有任何问题的更新吗?

0 投票
1 回答
265 浏览

google-apps-script - V8 引擎不再因错误而中断

此问题已报告给 Google:https ://issuetracker.google.com/issues/152948662

问题的简短描述

在 Rhino 运行时,如果用户按下工具栏上的“调试”按钮,脚本调试器 (script.google.com) 将在任何包含错误(已处理或未处理)的行处中断。(如果用户按下“运行”按钮,它不会中断)。监视窗口将被激活,用户可以检查发生错误时有效的变量。

在 V8 运行时中,脚本调试器在任何情况下都不会因任何错误而中断。这对于调试非常不方便。

一个可靠地重现问题的小代码示例

示例应按原样或以最少的设置运行,无需外部依赖

哪些步骤将重现该问题?

  1. 创建一个新项目

  2. 将代码插入 Code.gs

  3. 调试代码

什么是预期的输出?你看到了什么呢?如果您看到错误消息,请提供它们。

预期:调试器中断与asdfgh()

实际:调试器退出调试

消息:调试器(非常)将错误简要地显示为祝酒词,并在日志和执行下记录未处理的错误。

请在下面提供任何附加信息:

旁注:对于这个错误并不重要。只是额外的信息仅供参考。不要让这分散你的注意力或绊倒你

如果可以修复此错误,我可以使用我自己开发的函数,该函数有效地允许我在代码中的任何位置都有“断点”,从而绕过 GAS 调试器的另一个错误(断点仅在当前文件上命中):

在 Rhino 下,我可以在任何地方调用它,调试器会在那里为我停止。但这只是一个旁注。

0 投票
2 回答
202 浏览

google-apps-script - problem using MailApp.sendEmail(emailAddress, subject, message); with the new Chrome V8 runtime

I’m running some Google Apps Script that intereracts with a Google Sheet that extracts and compares some values as the sheet is updated and sends an email if certain criteria are exceeded. It has worked solidly for over a year but recently stopped and I’ve found the problem to be with the new Chrome V8 runtime environment. If I run the legacy java environment – it works, no problem.

The script looks for a condition whereby a threshold, set in the spreadsheet is exceeded – if so it should send an email. I have proven that the script identifies the threshold exceeded condition, that it can write and read values from the spreadsheet and that it can read and write the email address from a cell.

It seems that the MailApp.sendEmail(emailAddress, subject, message); doesn't work. Any suggestions greatly appreciated.

Script extract is as follows:

0 投票
2 回答
120 浏览

debugging - 无法在 v8 运行时访问异常属性

当我的代码中发生异常时,我正在尝试获取堆栈跟踪(和其他详细信息)。为此,请使用以下代码:

但是自从 Google Apps Script 上的 v8 运行时更新以来,这不会返回异常对象的任何属性。

在 v8 运行时,我可以在上面的代码中获取堆栈跟踪,如果我使用exception["stack"],我会得到堆栈跟踪。

但我希望我可以避免使用字符串 ( "stack") 并获取我可能不知道属性名称的异常的所有其他属性。

在这种for...in情况下,循环似乎不起作用。

如何访问异常对象的属性?

(所有属性不使用属性名称)

0 投票
1 回答
69 浏览

debugging - 在 Google Apps 脚本中,使用新的 V8 运行时时断点的工作方式是否有所不同?

使用旧的运行时,我可以在代码的任何位置设置断点。使用新的 v8 运行时断点显然必须在我从调试器运行的函数中?

这是预期的行为吗?我在调试器或我的代码中做错了吗?也许它的结构不正确?

最小的例子:

V8 运行时间:

我可以设置断点var test4 = 4,然后使用调试器和 select myFunction,代码在该行中断。

但是,如果我设置断点var test2 = 2,然后使用调试器,选择myFunction,它不会中断(它会与旧运行时一起使用)。

0 投票
2 回答
225 浏览

typescript - V8 上的 Google Apps 脚本继承

我最近注意到 V8 引擎的一种奇怪行为。当继承在一个单独的文件中找到的类时,引擎无法识别基类,例如以下配置失败:

BaseFoo.ts

SpecialFoot.ts

有一个错误:

ReferenceError:未定义 BaseFoo [行:1,函数:,文件:SpecialFoo]

如果这两个类放在同一个文件中,它就可以工作。

我正在使用 Visual Studio Code,它批准了这个配置(意味着没有拼写错误)。

有任何想法吗?

0 投票
1 回答
230 浏览

google-apps-script - 从 Rhino 切换到 V8 导致错误代码 PERMISSION_DENIED

Rhino最近我将我的谷歌幻灯片脚本运行时从V8. 我测试了我的附加组件,但出现错误:

We're sorry, a server error occurred while reading from storage. Error code PERMISSION_DENIED.

我的脚本使用PropertiesService.getUserProperties(). 我发现我必须从我的谷歌帐户中注销并再次登录,它才有效

我可以想象,对于使用此插件的其他用户来说,这也可能是一件痛苦的事情。还有其他方法可以解决此错误吗?

appscript.json配置

此外,我正在使用clasp将代码推送到 App 脚本在我的 PC 上开发附加组件。

更新

我创建了最小的项目来重现这个错误,我发现这PropertiesService.getUserProperties()不是问题。事实证明,从 切换Rhino到后V8,我无法调用任何 appscript 函数。

带模板:

目前,我使用 2 个不同的账户登录到我的谷歌驱动器。在登录 Google chrome 以外的其他 acc 上测试插件时,会出现错误。

We're sorry, a server error occurred while reading from storage. Error code PERMISSION_DENIED.