如何使用 Google App 脚本将 Google 电子表格中的指定数据附加到 Google 文档?
How to Append a table with specified data from Google Spreadsheet to Google Doc using Google App Script?
作为标题,我尝试使用 GAS 将 table 附加到来自 Google Spreadsheet 的 Google 文档。到目前为止,我能找到的 the post and some scripts 是关于附加整个 sheet,而不是选定或指定的行或列。下面是片段。我应该怎么做才能使代码片段满足我的需要?请指教
p.s。异常信息:
异常:参数 (number[]) 与 DocumentApp.Body.appendTable 的方法签名不匹配。 会在我执行脚本后弹出。
function get_insertion_and_deletion_value(fileID)
{
var url="MY URL";
var SpreadSheet = SpreadsheetApp.openByUrl(url);
var ss = SpreadSheet.getSheetByName("LOG");
var values = ss.getDataRange().getValues();
var reportHeader = "Report Header";
var ad= DocumentApp.openById("MY ID");
var body = ad.getBody();
var info_table=[];
for(var i=0, iLen=values.length; i<iLen; i++)
{
if(values[i][0]=="MYID")
{
var delete_string=ss.getRange(i+1,3).getValue();
var insert_string=ss.getRange(i+1,7).getValue();
var error_type=ss.getRange(i+1,13).getValue();
var correction_content=ss.getRange(i+1,14).getValue();
info_table.push(ss.getRange(i+1,3).getValue(),ss.getRange(i+1,7).getValue(),ss.getRange(i+1,13).getValue(),ss.getRange(i+1,14).getValue())
}
}
body.insertParagraph(0, reportHeader).setHeading(DocumentApp.ParagraphHeading.HEADING1);
table = body.appendTable(info_table);
var tableHeader = table.getRow(0);
tableHeader.editAsText().setBold(true).setForegroundColor('#ffffff');
var getCells = tableHeader.getNumCells();
for(var i = 0; i < getCells; i++)
{
tableHeader.getCell(i).setBackgroundColor('#BBB9B9');
}
return info_table;
}
我建议您更改 for 循环,如图所示。我删除了未使用的变量。首先,您需要像电子表格 setValues() 一样构建行,因此我将值列表包含在 [] 中。第二,你已经有了这些值,所以所有这些 ss.getRange(i+1,3).getValue() 都是多余的,并导致对服务器的另一个调用。请记住,第 3 列是值数组中的索引 2。所以我刚刚使用了您从 getDataRange().getValues().
获得的值
for(var i=0, iLen=values.length; i<iLen; i++)
{
if(values[i][0]=="MYID")
{
info_table.push([values[i][2],values[i][6],values[i][12],values[i][13]]);
}
}
作为标题,我尝试使用 GAS 将 table 附加到来自 Google Spreadsheet 的 Google 文档。到目前为止,我能找到的 the post and some scripts 是关于附加整个 sheet,而不是选定或指定的行或列。下面是片段。我应该怎么做才能使代码片段满足我的需要?请指教
p.s。异常信息: 异常:参数 (number[]) 与 DocumentApp.Body.appendTable 的方法签名不匹配。 会在我执行脚本后弹出。
function get_insertion_and_deletion_value(fileID)
{
var url="MY URL";
var SpreadSheet = SpreadsheetApp.openByUrl(url);
var ss = SpreadSheet.getSheetByName("LOG");
var values = ss.getDataRange().getValues();
var reportHeader = "Report Header";
var ad= DocumentApp.openById("MY ID");
var body = ad.getBody();
var info_table=[];
for(var i=0, iLen=values.length; i<iLen; i++)
{
if(values[i][0]=="MYID")
{
var delete_string=ss.getRange(i+1,3).getValue();
var insert_string=ss.getRange(i+1,7).getValue();
var error_type=ss.getRange(i+1,13).getValue();
var correction_content=ss.getRange(i+1,14).getValue();
info_table.push(ss.getRange(i+1,3).getValue(),ss.getRange(i+1,7).getValue(),ss.getRange(i+1,13).getValue(),ss.getRange(i+1,14).getValue())
}
}
body.insertParagraph(0, reportHeader).setHeading(DocumentApp.ParagraphHeading.HEADING1);
table = body.appendTable(info_table);
var tableHeader = table.getRow(0);
tableHeader.editAsText().setBold(true).setForegroundColor('#ffffff');
var getCells = tableHeader.getNumCells();
for(var i = 0; i < getCells; i++)
{
tableHeader.getCell(i).setBackgroundColor('#BBB9B9');
}
return info_table;
}
我建议您更改 for 循环,如图所示。我删除了未使用的变量。首先,您需要像电子表格 setValues() 一样构建行,因此我将值列表包含在 [] 中。第二,你已经有了这些值,所以所有这些 ss.getRange(i+1,3).getValue() 都是多余的,并导致对服务器的另一个调用。请记住,第 3 列是值数组中的索引 2。所以我刚刚使用了您从 getDataRange().getValues().
获得的值for(var i=0, iLen=values.length; i<iLen; i++)
{
if(values[i][0]=="MYID")
{
info_table.push([values[i][2],values[i][6],values[i][12],values[i][13]]);
}
}