Google apps script 使用Google工作表中的触发器将行值移动到另一行

Google apps script 使用Google工作表中的触发器将行值移动到另一行,google-apps-script,Google Apps Script,我是谷歌代码脚本的初学者。现在,当我在电子表格中触发时,我的代码出现了问题。我有这个密码 function moveValuesOnly () { var ss = SpreadsheetApp.getActiveSpreadsheet (); var source = ss.getRange ("Sheet1!B6:V9"); var destRange = ss.getRange("Sheet1!B11

我是谷歌代码脚本的初学者。现在,当我在电子表格中触发时,我的代码出现了问题。我有这个密码

function moveValuesOnly () {
          var ss = SpreadsheetApp.getActiveSpreadsheet ();
          var source = ss.getRange ("Sheet1!B6:V9");
          var destRange = ss.getRange("Sheet1!B11:V14");
          var persamaan = ss.getRange("Sheet1!V6:V9")
          var nilai = ss.getRange("Sheet1!Z1").getValues
          // Déterminer l'emplacement de la première ligne vide.
          if(
          persamaan.getValues() == nilai
          )
          {
          source.copyTo (destRange, {contentsOnly: true});
          source.clear ();
          }
        
        }
我的spreadhseet有这个链接


在我的电子表格中,我有B6到V9的范围。我想在V6-V9中每个V的值为'Lulus'时触发,然后检查B11是否有值,以便B6直到V6的值复制到B12中,但是如果B11没有值,那么B6直到V6的值复制到B11中。

您可能不需要一个,而是一个
onEdit(e)
。试试这个:

function onEdit(e) {
  const sheetToWatch = 'Sheet1';
  const columnToWatch = 22; // column V
  const valueToWatch = 'Lulus';
  if (!e) {
    throw new Error('Please do not run the script in the script editor window. '
      + 'It runs automatically when you hand edit the spreadsheet');
  }
  const sheet = e.range.getSheet();
  if (!e.range
    || e.value !== valueToWatch
    || e.range.columnStart !== columnToWatch
    || e.range.rowStart <= sheet.getFrozenRows()
    || sheet.getName() !== sheetToWatch) {
    return;
  }
  const values = sheet.getRange(e.range.rowStart, 1, 1, sheet.getLastColumn())
    .getValues()
    .flat();
  sheet.appendRow(values);
  sheet.deleteRows(e.range.rowStart, 1);
}
函数onEdit(e){
const sheetToWatch=‘Sheet1’;
const columntwatch=22;//列V
const valueToWatch='Lulus';
如果(!e){
抛出新错误('请不要在脚本编辑器窗口中运行脚本。'
+“手动编辑电子表格时自动运行”);
}
const sheet=e.range.getSheet();
如果(!e.range)
||e.值!==值观察
||e.range.columnStart!==ColumntWatch

||e.range.rowStart(请使用拼写检查工具。在任何地方,而不仅仅是在句子开头,都要大写第一人称代词I。)但是为什么另一个人可以回答呢?但是没关系,这是我的错,斯佩尔小姐谢谢当我编辑电子表格时,脚本没有运行……为什么?脚本运行得很好。只有当值
Lulus
手动输入列
Sheet1!V
时,它才会起作用。使它在名称不同于
的工作表上工作>Sheet1
,修改定义了
sheetToWatch
的行。我无法运行脚本,因为它位于editSyntax错误:SyntaxError:Unexpected token“;”行:6文件:code.gs您的示例电子表格显示您修改了代码的第6行,引入了错误。请使用答案中给出的代码。不要在脚本中运行代码编辑器窗口。当您手工编辑电子表格时,它会自动运行。它只移动您在第五列中输入
Lulus
的行。现有
Lulus
行不会移动,而只移动您输入
lululus
的行。