我有问题MailApp.sendEmail()。我尝试通过 Google 电子表格中的脚本发送电子邮件。我的脚本适用于我的帐户,但不适用于我朋友的帐户。我收到这条消息:
消息被拒绝。有关详细信息,请参阅https://support.google.com/mail/answer/69585。最终收件人:rfc822;xx@xx.xx 操作:失败状态:5.0.0 诊断代码:smtp;消息被拒绝。有关详细信息,请参阅https://support.google.com/mail/answer/69585。上次尝试日期:2018 年 3 月 21 日星期三 05:41:31 -0700 (PDT)
我使用了 Martin Hawksey 教程脚本(经过一些修改):
var TO_ADDRESS = "xxx@gmail.com";
// spit out all the keys/values from the form in HTML for email
function formatHtmlMailBody(obj, order) {
var result = "html text";
// loop over all keys in the ordered form data
for (var idx in order) {
var key = order[idx];
result += key + " " + obj[key];
}
return …Run Code Online (Sandbox Code Playgroud) 如何独立于模块本身导出和导入类型定义。
在 flowtype 中,这看起来像这样:文件使用sub.js导出类型,文件使用使用导入类型myTypeexport type myType = {id: number};main.jsimport type {myType} from './sub.js';
这让我抓狂,代码昨天还可以工作,但现在不行了。我尝试再次检查所有语法,但问题仍然存在。来自 Google 表格的此服务器端请求在服务器端显示值 ( Logger.log()),但null在客户端返回。
function supervisorLine(lineData) {
if (lineData == 'Name Value is not VALID!') {
console.log("Supervisor Name Issue!");
} else {
document.getElementById('Team').value = lineData[7];
document.getElementById('Shift').value = lineData[12];
document.getElementById('action').classList.remove("disabled");
console.log("team " + lineData[7] + " shift " + lineData[12]);
////////////////////////////////// need to be Moved somewhere after password check!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
google.script.run.withSuccessHandler(function(quickStat2) {
console.log(quickStat2)
}).loginRecords(lineData[7], lineData[12]);
}
}
Run Code Online (Sandbox Code Playgroud)
这也是我的服务器端代码:
function loginRecords(team, shift) {
var sh = ss.getSheetByName("Attn Rec");
var result = [];
var matchRec = sh.getRange("a2:l" + sh.getLastRow()).getValues().filter(function(a) { …Run Code Online (Sandbox Code Playgroud) javascript web-applications google-sheets google-apps-script
我想知道在 JavaScript 中使用带有数组的 spread 的时间复杂度是多少。它是线性 O(n) 还是常数 O(1)?
下面的语法示例:
let lar = Math.max(...nums)
Run Code Online (Sandbox Code Playgroud) 我在 Angular 9 中构建了一个项目作为前端,Node.js 作为后端服务器。
现在我正在node appserver.js运行后端服务器。默认情况下侦听端口 9090。在另一个终端中,我ng serve像往常一样在端口 4200 上运行我的 Angular 应用程序。我在 Angular 应用程序中有一项服务,可以从服务器发送和接收消息。
我已经使用WebSocket类连接到端口 9090。我的应用程序在本地运行良好。但现在我如何在 Heroku 中部署。Heroku 给出一个随机端口号,将指定为process.env.PORT。我怎样才能在我的 WebSocket 服务中获取该端口?
我的问题是:
问答目前是元讨论的主题,请参与。目前的计划是在可能的情况下拆分为问答环节。A&A 的答案是社区维基,当状态得到解决时,问题应该成为一个问题。
前言
本问答力求成为Google Apps Script语言开发过程中遇到的常见错误的集合和参考对象,以期提高google-apps-script标签的长期可维护性。
在其他语言和通用标签中也有几个类似的成功经历(参见c++、android、php、php 再次),这一个也紧随其后。
它为什么存在?
新老开发人员提出的关于开发和生产过程中遇到的错误的含义和解决方案的问题数量很多,这些问题可以有效地简化为一个单一的答案。在撰写本文时,即使仅通过语言标签运行查询也会产生:
由于需要考虑细微差别和通常措辞不当的标题,对于志愿者来说,链接到最相关的副本既困难又耗时。
它由什么组成?
此问答包含的条目旨在提供有关如何:
目录
为了帮助您浏览不断增长的参考,请使用下面的目录:
这不是什么?
问答的范围仅限于普通(非平凡)。这不是:
要添加什么?
添加条目时,请考虑以下事项:
debugging google-api google-apps-script google-apps-script-addon
我最近了解了CLASP,并对使用TDD在本地编辑我的Google Apps 脚本(GAS)的可能性感到兴奋。
注意:可能有一种方法可以使用现有的 GAS 编辑器编写测试,但如果可能的话,我更愿意使用现代编辑器
clasp 效果很好,但我不知道如何模拟单元测试的依赖项(主要是通过jest,尽管我很高兴使用任何有效的工具)
尽管安装了@types/google-apps-script,但我不清楚如何分别“要求”或“导入”Google Apps Script 模块是使用 ES5 还是 ES2015 语法——请参见下面的说明。
虽然在测试单元中的相似,所以问题在这里,大部分的内容/评论似乎是从预扣时代,我无法在一个解决方案,同时跟进余下的引线到达。(当然,我未经训练的眼睛很可能漏掉了一些东西!)。
正如我上面提到的,在使用 gas-local 时尝试模拟多个依赖项后,我创建了一个问题(见上面的链接)。我的配置类似于jest.mock我在下面描述的测试,但值得注意的是以下差异:
gas-local测试LedgerScripts.test.js
import { getSummaryHTML } from "./LedgerScripts.js";
import { SpreadsheetApp } from '../node_modules/@types/google-apps-script/google-apps-script.spreadsheet';
test('test a thing', () => {
jest.mock('SpreadSheetApp', () => {
return jest.fn().mockImplementation(() …Run Code Online (Sandbox Code Playgroud) 顶级等待支持已在 14.3.0 via--experimental-top-level-await和更高版本中添加到 Node.js 中--harmony-top-level-await。
如果当前 Node.js 运行时支持,我需要在 ESM 脚本文件中使用顶级等待。此外,我需要设置一个布尔标志来指示在顶层成功等待了承诺。
我的意思的一个例子:
let topLevelAwaitEnabled;
try {
await Promise.resolve(); // replaced with an actual promise
topLevelAwaitEnabled = true;
} catch (ignored) {
topLevelAwaitEnabled = false;
}
console.log(topLevelAwaitEnabled);
// carry on with the rest of the application, regardless of success or failure
// at some point, topLevelAwaitEnabled is checked to conditionally execute some code
Run Code Online (Sandbox Code Playgroud)
如果启用了顶级等待支持,则可以很好地成功。但是,如果不支持,这将导致解析期间出现以下错误,并且无法在运行时用try/捕获catch:
$ node test.js...\test.js:3 …Run Code Online (Sandbox Code Playgroud) 我想在 TypeScript 代码库中使用提案do 表达式。
是否可能?如果可以,我应该如何配置 TypeScript?
我们最近将单一存储库更新为:
升级后编译成功,但在运行时我们遇到了很多错误,例如“ emitDecoratorMetadata通过引用带有命名空间的仅类型导入导致运行时错误”(https://github.com/microsoft/TypeScript/issues/42624)。ESLint 也报告了此错误。
我们通过(对于所有类型和接口)将所有“ import ”语句替换为“ import type ”语句来解决这个问题。这修复了运行时错误并且应用程序再次运行。为了修复 ESLint 错误,我们还必须安装并使用“eslint-plugin-import”扩展。
到目前为止一切顺利,但现在我们的测试停止工作了。看来 Jest 不理解“导入类型”声明。 在使用“导入类型”的类的每个单元测试中,测试都会失败并出现以下错误:
ReferenceError:Zyz 未定义
(其中 xyz 是测试类中的导入类型,例如
// some-component.ts
import type { Xyz } from '...';
...
Run Code Online (Sandbox Code Playgroud)
如果我们从“导入类型”语句中删除“类型”,则测试可以工作,但运行时错误会再次发生。
我已经搜索了很多(主要是尝试使用/重新配置 babel,因为我找到了这篇文章: https: //github.com/babel/babel/issues/10981),但现在我无法解决这个问题问题。
typescript ×3
angular ×2
javascript ×2
jestjs ×2
node.js ×2
arrays ×1
async-await ×1
clasp ×1
debugging ×1
email ×1
gmail-api ×1
google-api ×1
heroku ×1
heroku-api ×1
spread ×1
tdd ×1
unit-testing ×1
websocket ×1