function fetchWordPressPosts() { var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); sheet.clearContents(); // تنظیم ستون‌های اصلی var headers = ["Title", "Publish Date", "Update Date", "Categories", "Tags", "Keywords", "View Count", "Thumbnail", "Link"]; sheet.appendRow(headers); var baseUrl = 'https://officebaz.ir/ex/wp-json/wp/v2/posts'; var page = 1; var perPage = 100; var morePosts = true; while (morePosts) { var url = baseUrl + '?per_page=' + perPage + '&page=' + page + '&_embed'; // گرفتن اطلاعات از API var response = UrlFetchApp.fetch(url); var posts = JSON.parse(response.getContentText()); if (posts.length === 0) { morePosts = false; break; } // پر کردن داده‌ها posts.forEach(function(post, index) { var title = post.title.rendered; var publishDate = new Date(post.date).toLocaleDateString('fa-IR'); var updateDate = new Date(post.modified).toLocaleDateString('fa-IR'); var categories = getTaxonomies(post._embedded["wp:term"], "category"); var tags = getTaxonomies(post._embedded["wp:term"], "post_tag"); var keywords = getKeywords(post); var viewCount = getViewCount(post); var thumbnail = getThumbnail(post); var link = post.link; var row = [title, publishDate, updateDate, categories, tags, keywords, viewCount, thumbnail, link]; sheet.appendRow(row); // لاگ کردن ساختار کامل اولین پست if (page === 1 && index === 0) { Logger.log("ساختار کامل اولین پست:"); Logger.log(JSON.stringify(post, null, 2)); } }); page++; // لاگ کردن پیشرفت Logger.log("صفحه " + (page - 1) + " دریافت شد"); // اضافه کردن تأخیر کوتاه برای جلوگیری از فشار زیاد به سرور Utilities.sleep(1000); } // فرمت‌بندی شیت sheet.autoResizeColumns(1, 9); sheet.getRange(1, 1, 1, 9).setFontWeight("bold"); sheet.getRange(1, 1, sheet.getLastRow(), 9).setVerticalAlignment("middle"); sheet.getRange(1, 1, sheet.getLastRow(), 9).setBorder(true, true, true, true, true, true); } // Function برای استخراج دسته‌بندی‌ها و برچسب‌ها function getTaxonomies(terms, key) { if (!terms) return ""; var filteredTerms = terms.filter(function(termArray) { return Array.isArray(termArray) && termArray.length > 0 && termArray[0].taxonomy === key; }); return filteredTerms.map(function(termArray) { return termArray.map(function(term) { return term.name; }).join(", "); }).join(", "); } // Function برای استخراج کلمات کلیدی function getKeywords(post) { if (post.meta && post.meta.keywords) { return post.meta.keywords.join(", "); } else if (post.yoast_meta && post.yoast_meta.keywords) { return post.yoast_meta.keywords; } else if (post.acf && post.acf.keywords) { return post.acf.keywords; } else if (post.content && post.content.rendered) { var content = post.content.rendered; var keywordMatch = content.match(//); if (keywordMatch) { return keywordMatch[1]; } } return getTaxonomies(post._embedded["wp:term"], "post_tag"); // استفاده از تگ‌ها به عنوان کلمات کلیدی } // Function برای استخراج تعداد بازدید function getViewCount(post) { // جستجوی عمیق در ساختار پست if (post.meta && post.meta.post_views_count) { return post.meta.post_views_count; } else if (post._embedded && post._embedded.wp_postviews && post._embedded.wp_postviews[0]) { return post._embedded.wp_postviews[0]; } else if (post.custom_fields && post.custom_fields.post_views_count) { return post.custom_fields.post_views_count[0]; } // اگر تعداد بازدید پیدا نشد، می‌توانیم از تعداد نظرات استفاده کنیم if (post._embedded && post._embedded.replies && post._embedded.replies[0]) { return post._embedded.replies[0].length + " comments"; } return "N/A"; } // Function برای استخراج تصویر شاخص function getThumbnail(post) { if (post._embedded && post._embedded['wp:featuredmedia']) { return post._embedded['wp:featuredmedia'][0].source_url; } return "N/A"; }