如何在 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");
}
输出:
这是我想要实现的目标:
我想从我的 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");
}