如何在 google 应用程序脚本中获取用户输入?

How to get user input in google app script?

这是我想要实现的目标:

我想从我的 google spreadsheet 文档中删除 'n' 行。这个 'n' 可以根据文档中插入的错误条目的数量而变化 (我在 运行 函数之前知道这个数字)。我想给自己一个选择这个数字的灵活性(就像 C、C++ 或任何其他语言中的控制台输入一样)

一些研究显示了通过 SpreadsheetApp.getUi() 模式的解决方案。但它给我错误:Exception: Cannot call SpreadsheetApp.getUi() from this context.

我不想打开我的跨页sheet,因为它太大而且加载需要时间。实用删除行的目的是我不必打开它,否则它的所有 'moo' 点。

另一个解决方案可能是只创建一个变量并在 运行 脚本之前手动更改。但是,如果有一天我忘记更改该变量,它可能会产生错误的数据 (我想让它成为白痴证明)

是否有任何方法可以为独立 google 应用程序脚本获取用户输入?并且没有打开那个特定的 google sheet?

您可以在网络应用程序中创建一个函数,只需编写 doGet() 或 doPost() 函数并使用您的输入调用它。 参考 https://developers.google.com/apps-script/guides/web

输入行数,在您的情况下为 n,然后添加代码以从 SpreadSheet 中删除行。

您可以使用查询参数为 get 传递输入,例如:

?n=4

并且您可以在 doGet() 方法中使用 n。

您始终可以将脚本放入空白 sheet 并将其视为您的函数的占位符,并在其中弹出 ui 提示符。这样,您就不需要打开您的大 sheet。您始终可以通过 Apps 脚本访问其他 sheet。这样会更容易,您只需要将脚本传输到这里即可。

代码:

function showPrompt() {
  var ui = SpreadsheetApp.getUi(); 

  var result = ui.prompt(
      'Rows to delete?',
      'Input:',
      ui.ButtonSet.OK_CANCEL);

  var button = result.getSelectedButton();
  var numRows = result.getResponseText();
  if (button == ui.Button.OK) {
    // call function and pass the value
    deleteSheetRows(numRows);
  } 
}

function deleteSheetRows(numRows) {
  // url of the sheet with data
  var url = "https://docs.google.com/spreadsheets/d/***************/";
  var sheet = SpreadsheetApp.openByUrl(url);

  // do what you need to do here for that sheet using "numRows" value
  Logger.log("deleting "+numRows+" rows");
}

输出: