Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/444.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用google脚本从google工作表中提取特定列?_Javascript_Google Apps Script_Google Sheets - Fatal编程技术网

Javascript 如何使用google脚本从google工作表中提取特定列?

Javascript 如何使用google脚本从google工作表中提取特定列?,javascript,google-apps-script,google-sheets,Javascript,Google Apps Script,Google Sheets,因此,我有一个膳食清单电子表格,由谷歌表单提供。员工每天晚上在一天结束时数餐,每个专栏的第二个单元都有一个标题:开始,星期一,星期二你明白了。我想通知我自己,当某些商品以很快的速度售出时,它们可以补充。我的问题是,我可以使用 .getLastColumn() 但是我想根据列的第二个单元格中最近一列的“Initial”的每个lastColumn数据,将它们放在一个单独的表上的2列数组中。有什么想法吗?这是我目前的剧本 函数activeData(){ var ss=SpreadsheetApp.g

因此,我有一个膳食清单电子表格,由谷歌表单提供。员工每天晚上在一天结束时数餐,每个专栏的第二个单元都有一个标题:开始,星期一,星期二你明白了。我想通知我自己,当某些商品以很快的速度售出时,它们可以补充。我的问题是,我可以使用

.getLastColumn()

但是我想根据列的第二个单元格中最近一列的“Initial”的每个lastColumn数据,将它们放在一个单独的表上的2列数组中。有什么想法吗?这是我目前的剧本

函数activeData(){
var ss=SpreadsheetApp.getActiveSpreadsheet();
var Sheet=ss.getSheetByName(“IREmaildata”);
var lastCol=Sheet.getLastColumn();
var rangeInitial=Sheet.getDataRange();//不确定这是否正确?
var initial=rangeInitial.getValues();
var int=“Initial”;//在“Initial”列中的第三个单元格必须显示“Initial”。
var rangeLastnight=Sheet.getRange(1,lastCol,37,1);//我可以很容易地从最近提交的Google表单中获取数据。
var lastNight=rangeLastnight.getValues();//我可以很容易地从最近提交的Google表单中获取数据。
/*
这里可能会有某种逻辑?
*/  
ss.getSheetByName(“Sheet5”).getRange(1,2,37,1).setValues(昨天);
ss.getSheetByName(“Sheet5”).getRange(1,3,37,1).setValues(今天);
}
  • 在共享电子表格中,
    IREmaildata
    Sheet5
    分别是您期望的输入和输出
  • 从共享电子表格中,您希望从工作表
    IREmaildata
    中检索值。
    • 您要检索最后一列(
      最近的夜间动态列
      ),并检索在第二行有
      首字母
      且距离最后一列最近的列(
      每周动态列的开始
      )。以及"A"一栏
    • 您希望将计算出的值放入新列(
      precnatage sall Static列
    • 对于共享电子表格,您希望将列“A”、“V”、“Y”和计算值检索到电子表格中的另一张图纸
  • 您希望使用谷歌应用程序脚本实现这一点
如果我的理解是正确的,那么这个答案呢?请把这看作是几个可能的答案之一

流量: 此示例脚本的流程如下所示

  • 从工作表的数据范围中检索值
    IREmaildata
  • 从值中检索最后一列的索引
  • 检索第2行值为
    Initial
    的列的索引
  • 检索列“A”,该列的索引在第2行的值为
    Initial
    ,即最后一列的索引
  • 计算百分比并将值放入数组,以便放入电子表格
  • 将结果值放入电子表格
  • 示例脚本: 请将以下脚本复制并粘贴到共享电子表格的容器绑定脚本中。请准备目标工作表并将目标工作表名称设置为
    destSheetName
    ,然后运行函数
    activeData

    function activeData() {
      var destSheetName = "###";  // Please set the destination sheet name.
    
      var ss = SpreadsheetApp.getActiveSpreadsheet();
      var sheet = ss.getSheetByName("IREmaildata");
      var values = sheet.getDataRange().getValues();
      var lastColumnIndex = values[1].length - 1;
      var initialIndex = 0;
      for (var i = lastColumnIndex - 1; i >= 0; i--) {
        if (values[1][i] == "Initial") {
          initialIndex = i;
          break;
        }
      }
      var result = values.map(function(row, i) {
        var ar = [row[0], row[initialIndex], row[lastColumnIndex]];
        if (i == 0) {
          ar.push("");
        } else if (i == 1) {
          ar.push("Since Begining of week");
        } else if (i > 1) {
          var temp = 1 - (row[lastColumnIndex] / row[initialIndex]);
          ar.push(isNaN(temp) ? "None sold" : temp);
        }
        return ar;
      });
      var destSheet = ss.getSheetByName(destSheetName);
      destSheet.getRange("D3:D").setNumberFormat("0.00%");
      destSheet.getRange(1, 1, result.length, result[0].length).setValues(result);
    }
    
    注:
    • 在上面的脚本中,
      getValues()
      用于从工作表
      IREmaildata
      中检索值。在这种情况下,日期值作为日期对象进行检索。例如,如果要修复日期格式,请修改
      var values=sheet.getDataRange().getValues()
      to
      var values=sheet.getDataRange().getDisplayValues()
    参考资料:

    为了正确理解您的目标,您能否提供包含预期输入和输出的示例电子表格?当然,请删除您的个人信息;感谢您回复并提供电子表格样本。根据您的信息,我提出了一个示例脚本作为答案。你能确认一下吗?如果我误解了你的问题,而这不是你想要的结果,我道歉。@Mauricio Alvarez谢谢你的回答。我很高兴你的问题解决了。也谢谢你。