Google Apps 脚本。通过 URL 将数据从当前活动工作表传输到另一个工作表(在编辑事件中)

问题描述 投票:0回答:1

我正在尝试从一张 Google 表格传递数据:


数据通过URL传输到另一张表格:

https://docs.google.com/spreadsheets/d/1gFuY2i50Vxdl5kx7iHZAupILAW2u35KYSRzCKKXMWIk/edit#gid=0

数据(特定行)在触发器

onEdit()
上传输,并检查行
A
是否不为空且行
F
是否为“问题案例”。如果 A 不为空且 F 是问题情况,则当前工作表中当前行的数据将复制到另一工作表。

我从当前工作表中获取特定列:

Name, Date, Time, City, Status
以及
G
列上的一些特定单元格并将其复制到另一张工作表。我只选取发生问题案例编辑的行。


我有一个代码:

function onEdit(e) {
  try {
    var sheet = e.source.getSheetByName('Daily report');
    if (!sheet || e.range.columnStart < 6 || e.range.columnStart > 6) {
      return;
    }

  var ui = SpreadsheetApp.getUi();
  var title = "Message Box";

    // Получаем данные из редактируемой строки
    var row = e.range.rowStart;
    var valueA = sheet.getRange('A' + row).getValue();
    var valueF = sheet.getRange('F' + row).getValue();
   
    // Проверяем, что строка C не пустая и значение в столбце G равно "Проблемный кейс"
    if (valueA !== '' && valueF === 'Problem Case') {

      // Получаем данные для записи в другой документ
      var dataToSave = [
        sheet.getRange('A' + row).getValue(),
        sheet.getRange('B' + row).getValue(),
        sheet.getRange('C' + row).getValue(),
        sheet.getRange('D' + row).getValue(),
        sheet.getRange('E' + row).getValue(),
        sheet.getRange('F' + row).getValue(),
        sheet.getRange('G3').getValue(),
        sheet.getRange('G4').getValue(),
        sheet.getRange('G5').getValue()
      ];

      ui.alert(title, "TEST", ui.ButtonSet.OK);
      

      var targetURL = "https://docs.google.com/spreadsheets/d/1gFuY2i50Vxdl5kx7iHZAupILAW2u35KYSRzCKKXMWIk/edit#gid=0";         
      var targetDoc = SpreadsheetApp.openByUrl(targetURL);
      var targetList = targetDoc.getSheetByName("Sheet1");

      targetList.getRange(1, 1, dataToSave.length, dataToSave[0].length).setValues([dataToSave]);
      
    }
  } catch (error) {
    // Лог ошибки
    Logger.log('Error: ' + error.toString());
  }
}

如果列

F
已编辑,则会检查条件并复制数据。 OnEdit 事件起作用并将数据复制到数组:dataToSave。但是当我尝试在脚本中定义另一个文档和工作表时,就会出现问题。数据没有传递到另一张纸。但是编辑上的数组dataToSave填充了相应的数据


我通过目标文档的链接授予了编辑访问权限。我授予脚本编辑我的 Google 表的权限。但无论如何,什么也没发生。


SourceSheet(示例数据)可用:SourceSheet DestinationSheet(示例数据)可用:DestinationSheet

google-sheets google-apps-script google-apps data-transfer
1个回答
0
投票

请设置可安装的触发器

function onMyEdit(e) {
  lle.source.toast("Entry");
  const sh = e.range.getSheet();
  if (sh.getName() == 'Daily Report' && e.range.columnStart > 5 && e.range.columnStart < 7) {
    //e.source.toast("Gate1")
    var title = "Message Box";
    var colA = sh.getRange(e.range.rowStart, 1).getValue();
    var colF = sh.getRange(e.range.rowStart, 6).getValue();
    if (colA !== '' && colF === 'Problem Case') {
      var vs = sh.getRange(e.range.rowStart, 1, 1, 6).getValues().flat()
      vs = vs.concat(sh.getRange(3, 7, 3).getValues().flat());
      e.source.toast("Message",title);//I would use a toast because it will go away by itself and not slow down any other editing
      var tss = SpreadsheetApp.openByUrl("https://docs.google.com/spreadsheets/d/1gFuY2i50Vxdl5kx7iHZAupILAW2u35KYSRzCKKXMWIk/edit#gid=0");
      var tsh = tss.getSheetByName("Sheet1");
      tsh.getRange(tsh.getLastRow() + 1, 1, 1, vs.length).setValues([vs]);
    }
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.