谷歌表格应用程序脚本

时间:2021-06-30 07:47:57

标签: debugging google-apps-script

我想问一下我有几行代码。直到昨天,一切对我来说都很完美。

现在,当我开始调试脚本时,它以第 24 行的错误消息结束 => var ui = SpreadsheetApp.getUi();。

异常:无法从此上下文调用 SpreadsheetApp.getUi()。 输入框@ulozDataDoDb.gs:24

但是当我从谷歌表格中的按钮运行这个脚本时,它可以工作。

有谁知道如何处理它吗?

function inputBox() {
  
  //definice aktivního sešitu
  var ss = SpreadsheetApp.getActive();

  //definice aktivního listu
  var faktura = ss.getSheetByName("faktura");
  var dataBaze = ss.getSheetByName("db");

  //definice promenných pro dalši práci
  var cisloFaktury = faktura.getRange("I3").getValue();
  var varSymbol = faktura.getRange("E22").getValue();
  var datumVystaveni = faktura.getRange("datumVystaveni").getValue();
  var prijmeni = faktura.getRange("prijmeni").getValue();
  var jmeno = faktura.getRange("jmeno").getValue();
  var prijmeniJmeno = jmeno + " " + prijmeni;
  var castka = faktura.getRange("I55").getValue();
  var konstSymb = faktura.getRange("E23").getValue();
  var specSymb = faktura.getRange("E24").getValue();
  var formaUhrady = faktura.getRange("E19").getValue();
  
  //zapsat do DB
  //popis do DB
  var ui = SpreadsheetApp.getUi();
  var popis_v_DB = ui.prompt("Zadejte název do DB.").getResponseText();
  popis_v_DB = popis_v_DB.split(" ").join("_"); //vyhledá mezery a nahradí znakem

2 个答案:

答案 0 :(得分:1)

尝试更换

var ui = SpreadsheetApp.getUi();
var popis_v_DB = ui.prompt("Zadejte název do DB.").getResponseText();

var popis_v_DB = Browser.inputBox("Informace.", "Zadejte název do DB.", Browser.Buttons.OK_CANCEL);

但就您要求某人输入值而言,您将通过工作表而不是脚本编辑器来完成!

答案 1 :(得分:0)

您收到的 Cannot call SpreadsheetApp.getUi() from this context. 异常是因为 prompt 必须由用户而不是脚本来处理。

根据documentation

<块引用>

prompt(prompt) - 将在用户的编辑器中打开一个输入对话框,其中包含给定的消息和“确定”按钮。此方法在对话框打开时挂起服务器端脚本。用户关闭对话框后,脚本会继续运行。

参考