Ui.prompt & Ui.alert 的问题
Problems With Ui.prompt & Ui.alert
在这里,我尝试构建一系列提示和警报以发送 SMS 消息。通过这个我输入了两个变量的值(1)移动phone号码和(2)预付款的截止日期。
这是它的来源:
function PromptPrepaymentReminder() {
var ui = SpreadsheetApp.getUi();
/* Шаг № 1: ввод мобильного телефона гостя */
var step1 = ui.prompt("Напоминание о внесении страхового депозита: шаг 1 из 3", "Введите номер мобильного телефона гостя. Например, +79522294179.", ui.ButtonSet.OK);
var step1_button = step1.getSelectedButton();
var recipient = step1.getResponseText();
if (step1_button == ui.Button.OK) {
/* Когда пользователь нажимает «Ок» на шаге № 1 */
var step2 = ui.prompt("Напоминание о внесении страхового депозита: шаг 2 из 3", "Введите точные дату и время чтобы установить дедлайн по внесению депозита. Например, 12.06.2016, 18:00.", ui.ButtonSet.OK_CANCEL);
var step2_button = step2.getSelectedButton();
var prepaymentReferenceLink = "berdyanskaya56.ru/info/prepayment";
var prepaymentDeadline = step2.getResponseText();
var message = "Мини-гостиница Бердянская 56. Внесение предоплаты в размере 1000 руб.: " + prepaymentReferenceLink + ". Внести необходимо до " + prepaymentDeadline + " по московскому времени.";
if (step2_button == ui.Button.OK) {
/* Когда пользователь нажимает «Ок» на шаге № 2 */
var step3 = ui.alert("Напоминание о внесении страхового депозита: шаг 3 из 3", "Пожалуйста, проверьте детали СМС-напоминания перед отправкой гостю:" + "\n" + "\nНомер получателя: " + recipient + "\n" + "\nТекст оповещения: " + message, ui.ButtonSet.YES_NO);
var step3_button = step3.getSelectedButton();
if (step3_button == ui.Button.YES) {
Logger.log("Нажал на YES на третьем шаге.");
/* Когда пользователь нажимает «Да» на шаге № 3. Здесь же отправляем и СМС-уведомление. */
try {
TwilioTextMessenger(recipient, message);
ui.alert("СМС-напоминание было успешно отправлено гостю на " + recipient + ".");
}
catch (err) {
ui.alert("Не удалось отправить гостю СМС-напоминание. Пожалуйста, попробуйте снова.");
}
} else {
/* Когда пользователь нажимает «Нет» на шаге № 3 */
var step2 = ui.prompt("Напоминание о внесении страхового депозита: шаг 2 из 3", "Введите точные дату и время чтобы установить дедлайн по внесению депозита. Например, 12.06.2016, 18:00.", ui.ButtonSet.OK_CANCEL);
var step2_button = step2.getSelectedButton();
var prepaymentDeadline = step2.getResponseText();
var message = "Мини-гостиница Бердянская 56. Внесение предоплаты в размере 1000 руб.: " + prepaymentReferenceLink + ". Внести необходимо до " + prepaymentDeadline + " по московскому времени.";
}
} else if (step2_button == ui.Button.CANCEL) {
/* Когда пользователь нажимает «Отмена» на шаге № 2 */
var step1 = ui.prompt("Напоминание о внесении страхового депозита: шаг 1 из 3", "Введите номер мобильного телефона гостя. Например, +79522294179.", ui.ButtonSet.OK_CANCEL);
var step1_button = step1.getSelectedButton();
var recipient = step1.getResponseText();
} else if (step2_button == ui.Button.CLOSE) {
/* Когда пользователь нажимает «Закрыть» на шаге № 2 */
ui.alert("Отправка СМС-оповещения была прервана пользователем на шаге № 2. Чтобы отправить напоминание, попробуйте повторить снова.");
}
} else if (step1_button == ui.Button.CLOSE) {
/* Когда пользователь нажимает на «Закрыть» на шаге № 1 */
ui.alert("Отправка СМС-оповещения была прервана пользователем на шаге № 1. Чтобы отправить напоминание, попробуйте повторить снова.");
}
}
但你更应该注意以下部分:
/* Когда пользователь нажимает «Ок» на шаге № 2 */
var step3 = ui.alert("Напоминание о внесении страхового депозита: шаг 3 из 3", "Пожалуйста, проверьте детали СМС-напоминания перед отправкой гостю:" + "\n" + "\nНомер получателя: " + recipient + "\n" + "\nТекст оповещения: " + message, ui.ButtonSet.YES_NO);
var step3_button = step3.getSelectedButton();
if (step3_button == ui.Button.YES) {
Logger.log("Нажал на YES на третьем шаге.");
/* Когда пользователь нажимает «Да» на шаге № 3. Здесь же отправляем и СМС-уведомление. */
try {
TwilioTextMessenger(recipient, message);
ui.alert("СМС-напоминание было успешно отправлено гостю на " + recipient + ".");
}
catch (err) {
ui.alert("Не удалось отправить гостю СМС-напоминание. Пожалуйста, попробуйте снова.");
}
} else {
/* Когда пользователь нажимает «Нет» на шаге № 3 */
var step2 = ui.prompt("Напоминание о внесении страхового депозита: шаг 2 из 3", "Введите точные дату и время чтобы установить дедлайн по внесению депозита. Например, 12.06.2016, 18:00.", ui.ButtonSet.OK_CANCEL);
var step2_button = step2.getSelectedButton();
var prepaymentDeadline = step2.getResponseText();
var message = "Мини-гостиница Бердянская 56. Внесение предоплаты в размере 1000 руб.: " + prepaymentReferenceLink + ". Внести необходимо до " + prepaymentDeadline + " по московскому времени.";
}
上面你可以看到在第三步(你会在俄语中看到 шаг 3 из 3
)ui.alert
和 ui.ButtonSet.YES_NO
就两个都不按的效果而言不起作用Yes
也不 No
。当我声明在每种情况下显示两种类型的 ui.alert
时,它们都没有发生任何事情。
简而言之:
ui.alert("СМС-напоминание было успешно отправлено гостю на " + recipient + ".");
}
catch (err) {
ui.alert("Не удалось отправить гостю СМС-напоминание. Пожалуйста, попробуйте снова.");
}
这是一个关于如何使用 ui.prompt
和 ui.alert
的小课程,但对我帮助不大 :-(: https://developers.google.com/apps-script/reference/base/ui.
拜托,你能检查一下我是否遗漏了什么吗?当用户按下 Yes
或 No
时,如何修复它以使其显示 ui.alert
s 中的一个?
检查你的执行记录:你应该从...
var step3_button = step3.getSelectedButton();
...因为 step3
是一个 Button 枚举,它没有任何方法属性。
那个错误:
Execution failed: TypeError: Cannot find function getSelectedButton in object YES.
需要比较 Ui.alert()
to Ui.prompt()
, and you'll see that they have different Return types. If you'd used the latter, then PromptResponse.getselectedButton()
才能获得 Button
。
只需删除该问题行并将对 step3_button
的引用替换为 step3
,您应该没问题。
在这里,我尝试构建一系列提示和警报以发送 SMS 消息。通过这个我输入了两个变量的值(1)移动phone号码和(2)预付款的截止日期。
这是它的来源:
function PromptPrepaymentReminder() {
var ui = SpreadsheetApp.getUi();
/* Шаг № 1: ввод мобильного телефона гостя */
var step1 = ui.prompt("Напоминание о внесении страхового депозита: шаг 1 из 3", "Введите номер мобильного телефона гостя. Например, +79522294179.", ui.ButtonSet.OK);
var step1_button = step1.getSelectedButton();
var recipient = step1.getResponseText();
if (step1_button == ui.Button.OK) {
/* Когда пользователь нажимает «Ок» на шаге № 1 */
var step2 = ui.prompt("Напоминание о внесении страхового депозита: шаг 2 из 3", "Введите точные дату и время чтобы установить дедлайн по внесению депозита. Например, 12.06.2016, 18:00.", ui.ButtonSet.OK_CANCEL);
var step2_button = step2.getSelectedButton();
var prepaymentReferenceLink = "berdyanskaya56.ru/info/prepayment";
var prepaymentDeadline = step2.getResponseText();
var message = "Мини-гостиница Бердянская 56. Внесение предоплаты в размере 1000 руб.: " + prepaymentReferenceLink + ". Внести необходимо до " + prepaymentDeadline + " по московскому времени.";
if (step2_button == ui.Button.OK) {
/* Когда пользователь нажимает «Ок» на шаге № 2 */
var step3 = ui.alert("Напоминание о внесении страхового депозита: шаг 3 из 3", "Пожалуйста, проверьте детали СМС-напоминания перед отправкой гостю:" + "\n" + "\nНомер получателя: " + recipient + "\n" + "\nТекст оповещения: " + message, ui.ButtonSet.YES_NO);
var step3_button = step3.getSelectedButton();
if (step3_button == ui.Button.YES) {
Logger.log("Нажал на YES на третьем шаге.");
/* Когда пользователь нажимает «Да» на шаге № 3. Здесь же отправляем и СМС-уведомление. */
try {
TwilioTextMessenger(recipient, message);
ui.alert("СМС-напоминание было успешно отправлено гостю на " + recipient + ".");
}
catch (err) {
ui.alert("Не удалось отправить гостю СМС-напоминание. Пожалуйста, попробуйте снова.");
}
} else {
/* Когда пользователь нажимает «Нет» на шаге № 3 */
var step2 = ui.prompt("Напоминание о внесении страхового депозита: шаг 2 из 3", "Введите точные дату и время чтобы установить дедлайн по внесению депозита. Например, 12.06.2016, 18:00.", ui.ButtonSet.OK_CANCEL);
var step2_button = step2.getSelectedButton();
var prepaymentDeadline = step2.getResponseText();
var message = "Мини-гостиница Бердянская 56. Внесение предоплаты в размере 1000 руб.: " + prepaymentReferenceLink + ". Внести необходимо до " + prepaymentDeadline + " по московскому времени.";
}
} else if (step2_button == ui.Button.CANCEL) {
/* Когда пользователь нажимает «Отмена» на шаге № 2 */
var step1 = ui.prompt("Напоминание о внесении страхового депозита: шаг 1 из 3", "Введите номер мобильного телефона гостя. Например, +79522294179.", ui.ButtonSet.OK_CANCEL);
var step1_button = step1.getSelectedButton();
var recipient = step1.getResponseText();
} else if (step2_button == ui.Button.CLOSE) {
/* Когда пользователь нажимает «Закрыть» на шаге № 2 */
ui.alert("Отправка СМС-оповещения была прервана пользователем на шаге № 2. Чтобы отправить напоминание, попробуйте повторить снова.");
}
} else if (step1_button == ui.Button.CLOSE) {
/* Когда пользователь нажимает на «Закрыть» на шаге № 1 */
ui.alert("Отправка СМС-оповещения была прервана пользователем на шаге № 1. Чтобы отправить напоминание, попробуйте повторить снова.");
}
}
但你更应该注意以下部分:
/* Когда пользователь нажимает «Ок» на шаге № 2 */
var step3 = ui.alert("Напоминание о внесении страхового депозита: шаг 3 из 3", "Пожалуйста, проверьте детали СМС-напоминания перед отправкой гостю:" + "\n" + "\nНомер получателя: " + recipient + "\n" + "\nТекст оповещения: " + message, ui.ButtonSet.YES_NO);
var step3_button = step3.getSelectedButton();
if (step3_button == ui.Button.YES) {
Logger.log("Нажал на YES на третьем шаге.");
/* Когда пользователь нажимает «Да» на шаге № 3. Здесь же отправляем и СМС-уведомление. */
try {
TwilioTextMessenger(recipient, message);
ui.alert("СМС-напоминание было успешно отправлено гостю на " + recipient + ".");
}
catch (err) {
ui.alert("Не удалось отправить гостю СМС-напоминание. Пожалуйста, попробуйте снова.");
}
} else {
/* Когда пользователь нажимает «Нет» на шаге № 3 */
var step2 = ui.prompt("Напоминание о внесении страхового депозита: шаг 2 из 3", "Введите точные дату и время чтобы установить дедлайн по внесению депозита. Например, 12.06.2016, 18:00.", ui.ButtonSet.OK_CANCEL);
var step2_button = step2.getSelectedButton();
var prepaymentDeadline = step2.getResponseText();
var message = "Мини-гостиница Бердянская 56. Внесение предоплаты в размере 1000 руб.: " + prepaymentReferenceLink + ". Внести необходимо до " + prepaymentDeadline + " по московскому времени.";
}
上面你可以看到在第三步(你会在俄语中看到 шаг 3 из 3
)ui.alert
和 ui.ButtonSet.YES_NO
就两个都不按的效果而言不起作用Yes
也不 No
。当我声明在每种情况下显示两种类型的 ui.alert
时,它们都没有发生任何事情。
简而言之:
ui.alert("СМС-напоминание было успешно отправлено гостю на " + recipient + ".");
}
catch (err) {
ui.alert("Не удалось отправить гостю СМС-напоминание. Пожалуйста, попробуйте снова.");
}
这是一个关于如何使用 ui.prompt
和 ui.alert
的小课程,但对我帮助不大 :-(: https://developers.google.com/apps-script/reference/base/ui.
拜托,你能检查一下我是否遗漏了什么吗?当用户按下 Yes
或 No
时,如何修复它以使其显示 ui.alert
s 中的一个?
检查你的执行记录:你应该从...
var step3_button = step3.getSelectedButton();
...因为 step3
是一个 Button 枚举,它没有任何方法属性。
那个错误:
Execution failed: TypeError: Cannot find function getSelectedButton in object YES.
需要比较 Ui.alert()
to Ui.prompt()
, and you'll see that they have different Return types. If you'd used the latter, then PromptResponse.getselectedButton()
才能获得 Button
。
只需删除该问题行并将对 step3_button
的引用替换为 step3
,您应该没问题。