嘿伙计们(请帮忙格式化,我是新手),
所以我正在制作一个程序,要求你向用户询问日期的输入(我将通过MMDDYYY形式输入日期来接收它们)。我只是对如何实现这一点感到困惑,因为我的脚本包含了Google日历的使用。
在此网站中:https://developers.google.com/apps-script/reference/base/prompt-response
他们有一个名为PromptResponse的类,通过执行DocumentApp.getUI()
或SpreadsheetApp.getUI();
我可以通过CalendarApp.getUI()
执行此操作吗?或者我需要另一种方式吗?
如果我能这样做,对于方法getResponseText(),当我调用它时,是否会询问用户那里(看看他们在链接中使用它的方式)?谢谢!
答案 0 :(得分:1)
当您致电one of the ui.prompt()
methods时,会打开对话框并与用户进行互动。当用户解除对话框时,ui.prompt()
会返回包含该互动所有结果的PromptResponse
对象。
然后,您可以查询PromptResponse
对象(即调用response.getResponseText()
和response.getSelectedButton()
)以查找用户输入的文本以及用户在对话框中单击的按钮。
CalendarApp对象不具有getUI()
方法,也没有“工具>脚本编辑器”菜单命令。
相反,将Apps脚本UI附加到Google Sheet, Doc, or Form或创建standalone script并从那里运行它。该脚本可以提示用户输入,然后调用Calendar API来执行添加日历事件等操作。
另外,请考虑寻找a date-picker library。
Google表格脚本中的示例
/** Demonstrates a simple way to prompt the user for a date. */
function promptForDate() {
var ui = SpreadsheetApp.getUi();
var response = ui.prompt('Create a Calendar Event', 'Enter a date in MMDDYYYY form', ui.ButtonSet.OK_CANCEL);
if (response.getSelectedButton() == ui.Button.OK) {
Logger.log('TODO: Create a Calendar Event for date %s', response.getResponseText());
ui.alert('TODO: Create a Calendar Event for date ' + response.getResponseText());
} else if (response.getSelectedButton() == ui.Button.CANCEL) {
Logger.log('The user canceled the dialog.');
} else {
Logger.log('The user closed the dialog.');
}
}
/** Adds a menu to the Google Sheet. */
function onOpen() {
var ui = SpreadsheetApp.getUi();
ui.createMenu('Custom Menu')
.addItem('Prompt For Date', 'promptForDate')
.addToUi();
}