我试图从另一个对象/类型中获取一个新的对象/类型,但出现Type 'string' is not assignable to type 'never'错误
const Flags = {
ONE: () => 'one',
TWO: () => 'two',
// ...
};
type createEnumType<T> = {[K in keyof T]: K};
type FlagsObject = createEnumType<typeof Flags>;
type FlagsKeys = keyof FlagsObject;
const keys = Object.keys(Flags) as FlagsKeys[];
let result = {} as FlagsObject;
for (const key of keys) {
result[key] = key;// Type 'string' is not assignable to type 'never'
}
/*
Expected value and type:
result = …Run Code Online (Sandbox Code Playgroud) 有没有办法从 Google Script 中的所有文档中获取(和更改/删除)所有触发器,就像我打开一样Script Editor -> Edit -> All your triggers?
更新:
我添加了一些测试触发器并尝试循环所有电子表格文件,正如Pierre-Marie Richard所说:
function getAllSpreadsheetTriggers()
{
var files = DriveApp.getFilesByType('application/vnd.google-apps.spreadsheet'),
spreadsheets = [],
triggers = [];
while(files.hasNext())
spreadsheets.push( SpreadsheetApp.openById(files.next().getId()) );
for (var i = 0; i < spreadsheets.length; i++)
{
triggers = ScriptApp.getUserTriggers( spreadsheets[i] );
Logger.log(triggers);
}
}
Run Code Online (Sandbox Code Playgroud)
但.getUserTriggers()总是返回一个空数组。我读了这个问题,最后一个答案是“我们决定不对这个问题采取行动。触发器总是属于一个特定的脚本,其他脚本无法访问。已经澄清了文档以明确这一点。”
原来做不到?
在我的谷歌电子表格应用程序中,我在一个函数中将一些参数保存在 localStorage 中。在另一个函数中我需要检索它们。当然,我可以创建无模式对话框或侧边栏,什么时候是我的html代码和js,但是第二个函数只刷新当前工作表,所以我不需要UI。我也知道,服务器端无法访问本地存储。这是我的抽象代码:
server.gs:
function menuItemClicked()
{
// when we click on item in addon menu, this called
// and load 'client.html'
}
function refreshCurrentSheet(params)
{
// called by 'client.html'
// do something else with params...
}
Run Code Online (Sandbox Code Playgroud)
client.html:
<script type="text/javascript">
google.script.run.refreshCurrentSheet( localStorage.getItem('var') );
</script>
Run Code Online (Sandbox Code Playgroud)
我在 API 中没有找到答案,该怎么做(
问题:如何在没有可见 UI 的情况下加载 html 并执行 js?
PS 将这些参数保存在服务器端的缓存中并不是一个解决方案,因为我经常在客户端中使用和更改它们