gpt4 book ai didi

javascript - 如何在 onEdit 的另一个函数中使用一个函数的值

转载 作者:行者123 更新时间:2023-11-29 21:01:51 26 4
gpt4 key购买 nike

我是一名编程新手,我意识到这可能是一个愚蠢的问题,但我似乎找不到解决方案。我在 Google 表格中使用 onOpen 触发器和 onEdit 触发器。onOpen 函数仅通过输入框从用户处获取名称。现在有了 onEdit 函数,我想为用户对单元格所做的所有更改添加时间戳,同时将他的名字添加到时间戳中。我希望我的目标很明确。

这是假定的代码:

function onOpen() {
var id = Browser.inputBox('ID Check', 'Enter your name', Browser.Buttons.OK);

return id
}

function onEdit() {
// Set a comment on the edited cell to indicate when it was changed.
var ss = SpreadsheetApp.getActiveSpreadsheet()
var sheet = ss.getSheets()[0]
var range = sheet.getActiveRange()

// var name = onOpen().value; .... this what i would like to get

range.setNote('Last modified: ' + new Date() + name);
}

因此,我不想在每次操作后都输入我的名字,而是希望它在 session 开始时使用我的名字,并在整个 session 期间使用它以将其添加到时间戳中。

最佳答案

如果电子表格的用户都登录到他们的 Google 帐户,那么您可以将他们的名字保存到“用户属性”服务。如果多个用户同时使用电子表格,则用户属性将为该用户获取正确的名称,即使代码使用相同的键名也是如此。

如果用户未登录 Google 帐户,则无法使用用户属性。您可以将每个用户名保存到电子表格的文档属性中,但如果同一个电子表格有多个用户未登录 GOOGLE 帐户,则电子表格无法“知道”谁在使用电子表格,因此无法知道要检索什么名称。

因此,如果多个用户将同时使用同一个电子表格,那么知道分配什么名称的唯一方法是用户是否拥有 Google 帐户并且已登录。

以下代码展示了如何保存名称,然后从用户属性中检索名称。

function onOpen() {
var usrProps,sessionName;

sessionName = Browser.inputBox('ID Check', 'Enter your name', Browser.Buttons.OK);

if (!sessionName) {//The user did not enter a name
sessionName = Session.getActiveUser().getEmail();//Get the logged in users email address

sessionName = sessionName.slice(0,sessionName.indexOf("@"));//Remove domain part of email address
}

usrProps = PropertiesService.getUserProperties();//Get User Properties

usrProps.setProperty('usrName', sessionName);//Save the user name with a key name

return sessionName;
}

function onEdit() {
var currentNote,newNote,sessionName,usrProps;

// Set a comment on the edited cell to indicate when it was changed.
var ss = SpreadsheetApp.getActiveSpreadsheet()
var sheet = ss.getSheets()[0]
var range = sheet.getActiveRange()

// var name = onOpen().value; .... this what i would like to get
usrProps = PropertiesService.getUserProperties();//Get User Properties

sessionName = usrProps.getProperty('usrName');//Get the user name for this user that was saved in onOpen

currentNote = range.getNote();//Get current note

if (currentNote) {
newNote = currentNote + ' - Last modified: ' + new Date() + sessionName;
} else {
newNote = 'Last modified: ' + new Date() + sessionName;
}

range.clear({commentsOnly: true});//Clear existing comment
range.setNote(newNote);
}

关于javascript - 如何在 onEdit 的另一个函数中使用一个函数的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46074695/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com