Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.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
Google apps script 基于值将一行移动到另一行_Google Apps Script_Google Sheets_Google Sheets Macros - Fatal编程技术网

Google apps script 基于值将一行移动到另一行

Google apps script 基于值将一行移动到另一行,google-apps-script,google-sheets,google-sheets-macros,Google Apps Script,Google Sheets,Google Sheets Macros,我正在尝试根据一个单元格(触发器单元格)的值将数据从一个Google工作表选项卡移动到另一个。“触发器”单元格是到特定任务到期日的天数。该值是使用一个简单的代码来计算天数差异的 我在运行代码时遇到一些问题。我有另一张工作表,做了类似的事情,使用相同的代码,它似乎工作得很好。谁能给我一双新的眼睛看看我现在做了什么蠢事?我试图重写它,但仍然有同样的问题 我重写了代码,从互联网上复制粘贴,逐行阅读,我似乎找不到问题所在 function moveToDue() { var UpToDate =

我正在尝试根据一个单元格(触发器单元格)的值将数据从一个Google工作表选项卡移动到另一个。“触发器”单元格是到特定任务到期日的天数。该值是使用一个简单的代码来计算天数差异的

我在运行代码时遇到一些问题。我有另一张工作表,做了类似的事情,使用相同的代码,它似乎工作得很好。谁能给我一双新的眼睛看看我现在做了什么蠢事?我试图重写它,但仍然有同样的问题

我重写了代码,从互联网上复制粘贴,逐行阅读,我似乎找不到问题所在

function moveToDue() {

  var UpToDate = "Up To Date";
  var Due = "Due";
  var triggerDue = "21";
  var triggerCol = 26;

  var url = "https://docs.google.com/spreadsheets/d/blahblahblahblah";
  var ss = SpreadsheetApp.openByUrl(url);
  var sheet = ss.getSheetByName(UpToDate);
  var range = sheet.getActiveCell();

//Move to Due

  if (sheet.getName() == UpToDate && range.getColumn() == triggerCol && range.getValue() == triggerDue) {

    var targetSheet = ss.getSheetByName(Due);
    var targetRange = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);

    sheet.getRange(range.getRow(), 1, 1, sheet.getLastColumn()).moveTo(targetRange);
    sheet.deleteRow(range.getRow());
      }
}
数据和到期是不同的选项卡标题

triggerDue是到期日之前需要触发移动的天数(在本例中为21)

triggerCol是触发器值所在的列

工作表副本:

更改这些:

var url=”https://docs.google.com/spreadsheets/d/blahblahblahblah";
var ss=SpreadsheetApp.openByUrl(url)

致:
var ss=SpreadsheetApp.getActive()

这只有在用户打开电子表格时才起作用,因为他们必须选择一行。根据我的测试,在服务器上打开电子表格/工作表时,活动单元格始终为“A1”。

更改这些:

var url=”https://docs.google.com/spreadsheets/d/blahblahblahblah";
var ss=SpreadsheetApp.openByUrl(url)

致:
var ss=SpreadsheetApp.getActive()

这只有在用户打开电子表格时才起作用,因为他们必须选择一行。根据我的测试,在服务器上打开电子表格/工作表时,活动单元格始终为“A1”。

回答: 存在一些代码问题,包括不正确使用
.getActiveCell()
和一些
if
for
逻辑

代码修复: 您的代码中还有一些可以清理的东西-您不需要检查if(sheet.getName()==UpToDate)
,因为您在
var sheet=ss.getSheetByName(UpToDate)上设置了这两行不做任何更改

我已经重新编写了很多函数,以使其更高效地运行。另外,
.deleteRow()
如果在循环中与
moveTo()
一起运行,似乎并不总是有效的,因此我添加了一个函数来清理之后的行

代码:
函数moveToDue(){
var-triggerDue=21;
var-triggerCol=26;
变量url=”https://docs.google.com/spreadsheets/d/blahblahblahblah";
var ss=SpreadsheetApp.openByUrl(url);
var upToDate=ss.getSheetByName(“最新”);
var targetSheet=ss.getSheetByName(“到期”);
var daysUntilEnd=upToDate.getRange(3,26,upToDate.getLastRow()-2).getValues();
对于(var i=0;i<(upToDate.getLastRow()-2);i++){
如果(daysUntilEnd[i][0]回答:
存在一些代码问题,包括不正确使用
.getActiveCell()
和一些
if
for
逻辑

代码修复: 您的代码中还有一些可以清理的内容—您不需要检查if(sheet.getName()==UpToDate)
,因为您在
var sheet=ss.getSheetByName(UpToDate);
上设置了这两行,而无需更改任何内容

我已经重新编写了很多函数,以使其更高效地运行。此外,
.deleteRow()
如果在循环中与
moveTo()
一起运行,则似乎并不总是有效,因此我添加了一个函数来清理之后的行

代码:
函数moveToDue(){
var-triggerDue=21;
var-triggerCol=26;
变量url=”https://docs.google.com/spreadsheets/d/blahblahblahblah";
var ss=SpreadsheetApp.openByUrl(url);
var upToDate=ss.getSheetByName(“最新”);
var targetSheet=ss.getSheetByName(“到期”);
var daysUntilEnd=upToDate.getRange(3,26,upToDate.getLastRow()-2).getValues();
对于(var i=0;i<(upToDate.getLastRow()-2);i++){

if(daysUntilEnd[i][0]当你说你有问题时,实际的问题是什么?还有,什么单元格是触发单元格?它曾经改变过吗?它只是不工作。行没有被移动。触发单元格在Z列中。它是一个=DATEDIF公式,用于计算从今天到特定程序结束日期之间的天数。在21天时,程序信息/行应该是从“最新”移至“到期”。因此,当Z列中的一个单元格的值为21时,该行应该被移动。是否可以删除所有个人/敏感数据并共享您的工作表?当然可以:非常感谢。您希望在什么情况下运行此函数?当您说您遇到问题时,实际问题是什么?还有,触发单元格是什么?是吗有没有变化?它只是不起作用。行没有被移动。触发器单元格在Z列中。它是一个=DATEDIF公式,用于计算从今天到特定程序结束日期之间的天数。在21天时,程序信息/行应该从“最新”移到“到期”。因此,当Z列中的单元格的值为21时,该行应该被移动。是否可以删除所有个人/敏感数据并共享您的工作表?当然可以:非常感谢。您希望在什么情况下运行此功能?非常有效!非常感谢您的帮助!非常有效!非常感谢您的帮助!