Javascript 将字符串匹配到数组
我在匹配数组中的字符串时遇到问题。列B2:Lastrow被定义为ID为的数组。我正在尝试将唯一的条目粘贴到google工作表中,这些条目在列B2:Lastrow中不可用。问题是..当我运行代码时,它也允许在google工作表中重复 我通过工作表上的计数公式使用它,但这会导致最大代码运行时错误。因此,我将范围用作数组。解决错误,但无法识别字符串是否唯一Javascript 将字符串匹配到数组,javascript,arrays,google-sheets,email,flysystem-google-drive,Javascript,Arrays,Google Sheets,Email,Flysystem Google Drive,我在匹配数组中的字符串时遇到问题。列B2:Lastrow被定义为ID为的数组。我正在尝试将唯一的条目粘贴到google工作表中,这些条目在列B2:Lastrow中不可用。问题是..当我运行代码时,它也允许在google工作表中重复 我通过工作表上的计数公式使用它,但这会导致最大代码运行时错误。因此,我将范围用作数组。解决错误,但无法识别字符串是否唯一 // Code: List Gmail Label to Google Sheet and save attachment to GDrive v
// Code: List Gmail Label to Google Sheet and save attachment to GDrive
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadsheet.getSheetByName('Summary');
var label = GmailApp.getUserLabelByName("Caterpiller Account");
var threads = label.getThreads();
function getEmails() {
for (var i = 0; i < threads.length; i++) {
var row = sheet.getLastRow() + 1;
var message = threads[i].getMessages()[0];
var ID = message.getId();
var fulldata = sheet.getRange('B2:B' + row).getValues();
if (fulldata.indexOf(ID) == -1) {
var messages=threads[i].getMessages();
var listID=threads[i].getPermalink();
var listdate=threads[i].getLastMessageDate();
var message = threads[i].getMessages()[0];
var attachment = message.getAttachments();
var attachmentBlob = message.getAttachments()[0].copyBlob();
var folder = DriveApp.getFolderById("1ilsecZOexqTWGfAMu5xJDx1pKh3z1US-");
// EXTRACTOR CODE:
for (var m=0; m < messages.length; m++) {
sheet.getRange(row,1).setValue(messages[m].getSubject());
sheet.getRange(row,2).setValue(ID);
sheet.getRange(row,3).setValue(listdate); // Value - Date
for (var z=0; z<attachment.length; z++) {
var file = DriveApp.getFolderById("1ilsecZOexqTWGfAMu5xJDx1pKh3z1US-").createFile(attachmentBlob);
//Pending: Weblinkview (basically get permanent url of file) / Or self developed function that gets file through description (where description is email ID)
}
row++;
}
}
}
}
期望:唯一的条目&更快的代码运行时。
实际情况:我是垃圾&代码时间还是一样的。你能给我举个例子吗?在上述情况下indexof不起作用吗?我希望不再使用任何循环。请注意:我将从范围中获取的数组不会包含任何空格,因为空格在其他线程中是一个问题。
bool IsSame(string str,char arr[100])
{
if(str.lenght!=strlen(arr))return false;
for(int i=0;i<str.lenght;i++)
{
if(str[i]!=arr[i]) return false;
}
return true;
}