使用谷歌应用程序脚本更新谷歌联系标记表
问题描述:
我试图从表中更新我的谷歌联系人。我想搜索工作表的第一列以检查“正在等待”。如果某行正在等待处理,我想要将该行的G,H和E列中的值添加到该联系人的备注中。使用谷歌应用程序脚本更新谷歌联系标记表
这是我到目前为止。目前停滞在如何获得标记为“挂起”的联系人的行。
function test(){
var ss = SpreadsheetApp.getActiveSheet();
var data = ss.getDataRange().getValues(); // read all data in the sheet
for(n=9;n<data.length;++n){ // iterate row by row and examine data in column I
if(data[n][0].toString().match('pending')){
var row = ???
var name = ss.getRange(row, 1).getValue();
var contacts = ContactsApp.getContactsByName(name);
for (var i in contacts) {
var donate = ss.getRange(row, 7).getValue();
var pickup = ss.getRange(row, 8).getValue();
var item = ss.getRange(row, 5).getValue();
contacts[i].setNotes(donate + '\n\n' + item + '\n\n' + pickup + '\n\n');}
ss.getRange('9**row**').setValue('done');
}
}
}
答
这个应该做,虽然没有测试过。让我知道如果代码不起作用。
function test()
{
var ss = SpreadsheetApp.openById(<SPREADSHEET_ID>).getSheetByName("Sheet1");
var lastRow = ss.getLastRow();
var data = ss.getRange("I1:I"+lastRow).getValues(); // read all data in the sheet
for(var n=0;n<data.length;n++)
{ // iterate row by row and examine data in column I
if(data[n] == 'pending')
{
//var row = ???
var name = ss.getRange("A"+n).getValue();
var contacts = ContactsApp.getContactsByName(name);
for (var i in contacts)
{
var donate = ss.getRange("G"+n).getValue();
var pickup = ss.getRange("H"+n).getValue();
var item = ss.getRange("E"+n).getValue();
contacts[i].setNotes(donate + '\n\n' + item + '\n\n' + pickup + '\n\n');}
ss.getRange('9**row**').setValue('done');
}
}
}
而不是使用var ss = SpreadsheetApp.getActiveSheet();
的为什么你愿意,你应该考虑使用var ss = SpreadsheetApp.openSheetById(<SPREADSHEET_ID>).getSheetByName(<SHEET_NAME>);
'getSheetById'?至于脚本...除最后一行外的工作不会迭代...保持未决... – testing123
因为'SpreadsheetApp.getActiveSheet();'并不总是确保您正在从正确的工作表读取数据。 –
我已经更新了我的答案,现在检查。只是'for'循环中的一个小改变 –