我在一家使用 Google 表格管理运营的公司工作。我们有一个用于从另一个部门请求产品的表格,其中用户请求的数量不得大于库存中的可用数量。 我正在尝试使用 Google Apps 脚本,但这很有挑战性。
以下是表格和电子表格的示例:
操作电子表格很容易,例如,我使用以下代码将产品名称和数量添加到地图中:
/**
* Retrieves stock data from a Google Sheets spreadsheet and returns it as a dictionary (map).
*
* @returns {Object} A dictionary where keys are product names and values are quantities in stock.
*/
/**
* Retrieves stock data from a Google Sheets spreadsheet and returns it as a map.
*
* @returns {Map} A map where keys are product names and values are quantities in stock.
*/
function getStockMap()
{
// Spreadsheet ID
const spreadsheetId = "1J5twCP4L4Smy7FP4JbARD3qVB_mv8rnQ1fRN5y6LvaQ";
// Open the spreadsheet
const spreadsheet = SpreadsheetApp.openById(spreadsheetId);
// Get the "Stock" sheet
const sheet = spreadsheet.getSheetByName("Stock");
// Define the range of cells containing stock data
const range = sheet.getRange('B1:D8');
// Get the values from the range
const data = range.getValues();
// Create an empty map to store stock data
const stockMap = new Map();
// Iterate through the data and populate the stock map
for (let i = 0; i < data.length; i++)
{
const product = data[i][0];
const quantity = data[i][2];
stockMap.set(product, quantity);
}
// Log the stock map
for (const [product, quantity] of stockMap)
{
Logger.log(`${product}: ${quantity}`);
}
return stockMap;
}
搜索后,我发现了这个相关的SO问题:如何在Google Form或Google Sheets上使用GAS限制基于两个ID的Google Forms提交
但是,我不想使用“OnSubmit”触发器,因为我仍然会提交带有错误数据的表单。
@ziganotschka提到了有关如何以编程方式将文本输入验证添加到表单的谷歌文档(here,但似乎您需要创建一个字段来执行此操作,但我需要向现有字段添加验证)
感谢任何帮助,这是我工作的第三天,我是一名Python开发人员,从未接触过JS。另一个问题是,谷歌的文档似乎告诉您所有可用的功能,但没有非常有用的示例、指南或解释为什么会这样。也许我很笨,但我过去在使用谷歌文档时遇到过问题,我发现它很难解析,所以我寻求帮助。
早上好!
您可以自动更新所请求数量的项目的数据验证吗?
// Add a text item to a form and require it to be a number within a range.
var textItem = form.addTextItem().setTitle('Pick a number between 1 and 100?');
var textValidation = FormApp.createTextValidation()
.setHelpText('Input was not a number between 1 and 100.')
.requireNumberBetween(1, 100)
.build();
textItem.setValidation(textValidation);
https://developers.google.com/apps-script/reference/forms/text-validation
您可以在表单的 onOpen(e) 触发器上运行此函数。
但是,无论选择哪种产品,这都将始终应用相同的数据验证。 解决方法是创建部分,每个产品都有自己的“请求数量”部分及其自定义数据验证。导航将允许您根据用户选择的产品将其引导至正确的部分。您可以使用上面的代码片段来定义每个部分的每个数据验证。
希望这有帮助!