Google Apps Script实现将单元格值写入表格而非文本的方法
解决Google Sheets脚本中单元格值引用问题
你的问题在于直接把"A4""H4"这类字符串写入了目标表,而非引用源表LP对应单元格的实际值。可以通过先将源行数据存入数组,再通过列索引调用对应值的方式解决,同时处理日期计算需求,修改后的代码如下:
function example2() { var Cop = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("GO"); var LP = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("0_Test-LISTE PROJETS"); // 获取LP表第4行(A4:V4)的所有值,转为一维数组方便调用 var sourceRow = LP.getRange('A4:V4').getValues()[0]; // 保留原有整行测试写入逻辑 Cop.getRange('A1:V1').setValues([sourceRow]); // 提取源行中需要用到的单元格值 const colA = sourceRow[0]; // A4的值 const colH = sourceRow[7]; // H4的值 const colJ = sourceRow[9]; // J4的值 const colQ = sourceRow[16]; // Q4的值 const colR = sourceRow[17]; // R4的值 const colT = sourceRow[19]; // T4的值 const colU = sourceRow[20]; // U4的值 // 计算R4+7天的日期(需确保R4为日期格式) const rPlus7Days = new Date(colR); rPlus7Days.setDate(rPlus7Days.getDate() + 7); // 构建目标数据数组,直接使用实际值 const targetData = [ [colA, colH, colJ, colQ, colU, 'color red'],//project lenght [colA, colH, colJ, colQ, colR, 'color BLUE'],//research lenght [colA, colH, colJ, colR, rPlus7Days, 'color white'],//waiting for client [colA, colH, colJ, rPlus7Days, colT, 'color green'],//production time [colA, colH, colJ, colT, colU, 'color purple']//installation on site ]; // 将目标数据写入Cop表的A2:F6区域 Cop.getRange('A2:F6').setValues(targetData); }
核心逻辑说明:
- 用
getValues()[0]把二维的行数据转为一维数组,通过列索引(从0开始计数)直接调用对应单元格的值 - 日期计算通过
Date对象的setDate()方法实现,确保生成的是合法日期格式而非文本 - 所有写入值均直接从源行数组提取,彻底避免写入"A4"这类字符串的问题
内容的提问来源于stack exchange,提问作者antho2B
相关产品推荐
相关产品推荐

