Google apps script 在电子表格中为每个产品创建一个文本项,并将此项的标题设置为;(产品名称)(剩余:(剩余数量)“;

Google apps script 在电子表格中为每个产品创建一个文本项,并将此项的标题设置为;(产品名称)(剩余:(剩余数量)“;,google-apps-script,google-sheets,google-forms,Google Apps Script,Google Sheets,Google Forms,我想为在线订单制作一个谷歌表单,该表单将显示每种产品的剩余数量,并在每次订单通过时更新 作为第一步,我尝试在电子表格中为每个产品创建一个TextItem,并将该项目的标题设置为“(产品名称)(剩余:(剩余编号))” var wsStocks=SpreadsheetApp.openById(ssID).getSheetByName(“股票”); var form=FormApp.openById(formID); 函数myFunction(){ var Products=wsStocks.getR

我想为在线订单制作一个谷歌表单,该表单将显示每种产品的剩余数量,并在每次订单通过时更新

作为第一步,我尝试在电子表格中为每个产品创建一个TextItem,并将该项目的标题设置为“(产品名称)(剩余:(剩余编号))”

var wsStocks=SpreadsheetApp.openById(ssID).getSheetByName(“股票”);
var form=FormApp.openById(formID);
函数myFunction(){
var Products=wsStocks.getRange(1,1,wsStocks.getLastRow(),1.getValues();
对于(j=1;解释/问题:
  • 在for循环中使用
    getRange
    getValue
    不是一种好的做法。您可以构造二维数组
    产品
    以同时包含列a和列B,然后您可以直接为这两列编制索引。我还用于简化字符串表达式:

    var Products = wsStocks.getRange(1,1,wsStocks.getLastRow(),2).getValues();
    for(j=0;j<Products.length;j++){
      form.addTextItem().setTitle( `${Products[j][0]} (remains: ${Products[j][1]})` ); 
    };
    
    解释/问题:
    • 在for循环中使用
      getRange
      getValue
      不是一种好的做法。您可以构造二维数组
      产品
      以同时包含列a和列B,然后您可以直接为这两列编制索引。我还用于简化字符串表达式:

      var Products = wsStocks.getRange(1,1,wsStocks.getLastRow(),2).getValues();
      for(j=0;j<Products.length;j++){
        form.addTextItem().setTitle( `${Products[j][0]} (remains: ${Products[j][1]})` ); 
      };
      

      谢谢!这个时间问题确实与我以前的情况大不相同。或者,如果我创建一个包含产品数量的项目的数组,并使用循环修改项目编号j,这会起作用吗?(如果是,怎么做?^^ ^ ^)@DSuchet感谢您的反馈。我不确定您的意思。由于stackoverflow不允许后续问题,您可以发布一个关于您希望实现的修改的新问题吗?如果通过单击答案左侧的勾选按钮解决了您的原始问题,请接受此答案。谢谢,sorry的不方便。谢谢!这个时间问题确实与我习惯的非常不同。或者,如果我创建一个包含与产品数量一样多的项目的数组,并使用循环来修改项目编号j,这会起作用吗?(如果是,如何做?^^^ ^)@DSuchet感谢您的反馈。我不确定您的意思。由于stackoverflow不允许后续问题,您可以发布一个关于您希望实现的修改的新问题吗?如果通过单击答案左侧的勾选按钮解决了您的原始问题,请接受此答案。谢谢,sor因为不方便,我很生气。
      var wsStocks = SpreadsheetApp.openById(ssID).getSheetByName("Stocks");
      var form = FormApp.openById(formID);
      
      function myFunction(){
        var Products = wsStocks.getRange(1,1,wsStocks.getLastRow(),2).getValues();
        for(j=0;j<Products.length;j++){
          form.addTextItem().setTitle( `${Products[j][0]} (remains: ${Products[j][1]})` ); 
          Utilities.sleep(4*1000); // 4 second delay
        };
      }