如何使用 Apps 脚本使用 Query 和 Importrange

How to use Query and Importrange using Apps Script

我需要使用应用程序脚本使用查询和导入范围从主 sheets 更新信息。 这是大师sheet。我需要从中访问信息: https://docs.google.com/spreadsheets/d/1tpv0iGwpnLUw6F5FoLn2jE4FBuF_igjriLA5uyNjczw/edit#gid=0

这是 sheet,我需要在其中显示数据: https://docs.google.com/spreadsheets/d/1ENZdtWI2f_wYzKbqUNziw6bVcTCpP6T4vkPbs-lPgC0/edit#gid=0

目前我正在使用获取日期。但我需要使用 Apps 脚本。 =QUERY(IMPORTRANGE("https://docs.google.com/spreadsheets/d/1tpv0iGwpnLUw6F5FoLn2jE4FBuF_igjriLA5uyNjczw/edit#gid=0","Task!A:J"),"SELECT* WHERE Col7 = 'JOHN'")

如果我的理解正确,当第 G 列具有特定值时,您想将数据从源电子表格导入另一个电子表格。

在这种情况下,您可以使用 getValues() and setValues()

const SOURCE_SPREADSHEET_ID = "1qkCxwyspeRrVcQRFqiHmIXRUjbrz9zgp09pYR0Y6_-M";
const TARGET_SPREADSHEET_ID = "1zp34NKnqRqdNvDzJx70T1spb0GbUQwnpUmJgkF81Pr4";
const SOURCE_SHEET_NAME = "Task";
const TARGET_SHEET_NAME = "Sheet1";
const NAME_COL_INDEX = 7;
const NAME = "JOHN";

function copyData() {
  const sourceSheet = SpreadsheetApp.openById(SOURCE_SPREADSHEET_ID).getSheetByName(SOURCE_SHEET_NAME);
  const sourceValues = sourceSheet.getRange("A1:J" + sourceSheet.getLastRow()).getValues();
  const targetValues = sourceValues.filter((row,i) => i === 0 || row[NAME_COL_INDEX-1] === NAME);
  const targetSheet = SpreadsheetApp.openById(TARGET_SPREADSHEET_ID).getSheetByName(TARGET_SHEET_NAME);
  targetSheet.clearContents();
  targetSheet.getRange(1,1,targetValues.length,targetValues[0].length).setValues(targetValues);
}

function installOnEditTrigger() {
  const ss = SpreadsheetApp.openById(SOURCE_SPREADSHEET_ID);
  ScriptApp.newTrigger("copyData")
           .forSpreadsheet(ss)
           .onEdit()
           .create();
}

注:

如果您希望它在用户编辑源电子表格时自动更新,请考虑 installing an onEdit trigger。要在上面的示例中执行此操作,请执行一次 installOnEditTrigger