【问题标题】:Moving rows to another sheet with Apps Script, but doesn't work with shared document使用 Apps 脚本将行移动到另一个工作表,但不适用于共享文档
【发布时间】:2022-11-07 23:20:25
【问题描述】:

我有一个脚本帮助我通过条件列生成开始日期,并通过“完成”列将一行移动到另一张表。当我使用该文档时,它可以正常工作,但是当其他人使用该文档时,行不会移动到单独的工作表中。有人知道它可能是什么吗?

`

function onEdit(e) {
first(e);
second(e);

function first(e) {
  var row = e.range.getRow();
  var col = e.range.getColumn();

if(
  e.source.getActiveSheet().getName() == 'B2B_LeadList' 
  &&
 col === 22 
  && 
  e.value == 'STARTED' 
  &&
e.source.getActiveSheet().getRange(row,23).setValue(new Date()== '' 
&& 
 row > 1)){
 
e.source.getActiveSheet().getRange(row,23).setValue(new Date());
}}

function second(e){
var mainSheet = 'B2B_LeadList'
var targetSheet = 'B2B_Archive'

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = SpreadsheetApp.getActiveSheet();
var range = sheet.getActiveRange();

if(sheet.getName() == 'B2B_LeadList' && e.range.getColumn() == 35 && e.range.getValue() == 'YES'){
  var row = e.range.getRow();
  var numColumns = sheet.getLastColumn();
  var targetSheet = ss.getSheetByName('B2B_Archive');
  var target = targetSheet.getRange(targetSheet.getLastRow() + 1,1);
  e.source.getActiveSheet().getRange(row,36).setValue(new Date());
  sheet.getRange(row,1,1,numColumns).moveTo(target);
  sheet.deleteRow(row);
} 
}

}

`

我希望在此文档中工作的其他用户可以通过在“完成?”中选择“是”将行从当前工作表移动到另一个工作表。柱子。

【问题讨论】:

  • 他们都有编辑权限,对吧?

标签: javascript google-apps-script google-sheets


【解决方案1】:

试试这种方式:

function onEdit(e) {
  const sh = e.range.getSheet();
  if (sh.getName() == 'B2B_LeadList' && e.range.columnStart === 22 && e.range.rowStart > 1 && e.value == 'STARTED') {
    sh.getRange(e.range.rowStart, 23).setValue(new Date());
  }
  if (sh.getName() == 'B2B_LeadList' && e.range.columnStart == 35 && e.value == 'YES') {
    var tsh = e.source.getSheetByName('B2B_Archive');
    var trg = tsh.getRange(tsh.getLastRow() + 1, 1);
    sh.getRange(e.range.rowStart, 36).setValue(new Date());
    sh.getRange(e.range.rowStart, 1, 1, sh.getLastColumn()).moveTo(trg);
    sh.deleteRow(e.range.rowStart);
  }
}

如果您要将脚本移动到他们的帐户,请确保他们授权。否则,请确保他们有权编辑文件。另请注意,这是一个简单的触发器,不能执行需要权限的功能。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-25
    相关资源
    最近更新 更多