Ui.prompt& amp; Ui.alert

时间:2016-07-04 13:17:06

标签: javascript google-apps-script google-sheets google-drive-api google-docs

在这里,我尝试构建一系列提示和警报来发送短信。通过这个我输入两个变量的值(1)手机号码和(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 из 3ui.alert ui.ButtonSet.YES_NOYes不起作用的效果不会No 1}}也不ui.alert。当我声明在每种情况下显示两种类型的ui.alert("СМС-напоминание было успешно отправлено гостю на " + recipient + "."); } catch (err) { ui.alert("Не удалось отправить гостю СМС-напоминание. Пожалуйста, попробуйте снова."); } 时,它们都没有发生任何事情。

这里简称:

ui.prompt

以下是关于如何使用ui.alertui.alert的小课程,但它对我没有多大帮助:-( https://developers.google.com/apps-script/reference/base/ui

拜托,你能检查我在这里是否遗漏了什么?当用户按下YesNo时,如何修复它以使其显示为#include<stdio.h> int main() { float hours[30]; float total; int day; int i ; float avg; int j; printf("The program calculates the total hours worked during \na specific period and the average length of a day.\n\n"); printf("How many days:"); scanf("%d",&day); for(i=0; i<day; i++){ printf("Enter the working hours for day %d:",i+1); scanf("%f",&hours[i]); total += hours[i]; } avg = total/day; printf("Total hours worked: %.1f\n", total); printf("Average length of day: %.1f\n", avg); printf("Hours entered:"); for( j = 0; j < day; j++){ printf("%.1f\t", hours[j]); } }

1 个答案:

答案 0 :(得分:0)

检查您的执行记录:您应该收到来自...的错误

var step3_button = step3.getSelectedButton();

...因为step3是一个Button枚举,它没有任何方法属性。

那个错误:

  

执行失败:TypeError:无法在对象YES中找到函数getSelectedButton。

Ui.alert()Ui.prompt()进行比较,您会看到他们有不同的退货类型。如果您使用后者,则需要PromptResponse.getselectedButton()才能获得Button

只需删除该问题行并将step3_button的引用替换为step3即可,您应该没问题。