5 عملکرد اسکریپت Google Sheets که باید بدانید

Google Sheets یک ابزار صفحه گسترده قدرتمند مبتنی بر ابر است که به شما امکان می دهد تقریباً هر کاری را که می توانید در Microsoft Excel انجام دهید انجام دهید . اما قدرت واقعی Google Sheets ویژگی Google Scripting است که با آن همراه است.

برنامه نویسی Google Apps(Google Apps) یک ابزار برنامه نویسی پس زمینه است که نه تنها در Google Sheets(in Google Sheets) بلکه در Google Docs، Gmail، Google Analytics و تقریباً هر سرویس ابری دیگر Google نیز کار می کند. (Google)این به شما امکان می دهد آن برنامه های جداگانه را خودکار کنید و هر یک از آن برنامه ها را با یکدیگر ادغام کنید.

در این مقاله می‌آموزید که چگونه با برنامه‌نویسی Google Apps شروع کنید ، یک اسکریپت پایه در Google Sheets برای خواندن و نوشتن داده‌های سلولی و مؤثرترین عملکردهای پیشرفته اسکریپت Google Sheets ایجاد کنید.(Google Sheets)

نحوه ایجاد یک اسکریپت Google Apps(How to Create a Google Apps Script)

می‌توانید همین الان شروع به ایجاد اولین اسکریپت Google Apps خود از داخل (Google Apps)Google Sheets کنید. 

برای انجام این کار، ابزارها(Tools) را از منو انتخاب کنید و سپس Script Editor را انتخاب کنید.

این پنجره ویرایشگر اسکریپت را باز می کند و به طور پیش فرض تابعی به نام myfunction() را تنظیم می کند. اینجاست که می‌توانید اسکریپت Google(Google Script) خود را ایجاد و آزمایش کنید .

برای ارائه یک عکس، سعی کنید یک تابع اسکریپت Google Sheets ایجاد کنید که داده‌ها را از یک سلول می‌خواند، محاسبه‌ای را روی آن انجام می‌دهد و مقدار داده را به سلول دیگر خروجی می‌دهد.

تابعی که برای دریافت داده از یک سلول، توابع getRange() و getValue() است. شما می توانید سلول را با ردیف و ستون شناسایی کنید. بنابراین اگر مقداری در سطر 2 و ستون 1 (ستون A) دارید، قسمت اول اسکریپت شما به این صورت خواهد بود:

function myFunction() {
   var sheet = SpreadsheetApp.getActiveSheet();
   var row = 2;
   var col = 1;
   var data = sheet.getRange(row, col).getValue();
}

این مقدار از آن سلول را در متغیر داده ذخیره می کند. (data)می توانید یک محاسبه روی داده ها انجام دهید و سپس آن داده ها را در سلول دیگری بنویسید. بنابراین آخرین قسمت این تابع به صورت زیر خواهد بود:

   var results = data * 100;
   sheet.getRange(row, col+1).setValue(results);
}

هنگامی که نوشتن عملکرد خود را تمام کردید، نماد دیسک را برای ذخیره انتخاب کنید. 

اولین باری که یک عملکرد جدید اسکریپت Google Sheets را مانند این اجرا می‌کنید (با انتخاب نماد اجرا)، باید مجوز(Authorization) اجرای اسکریپت را در حساب Google(Google Account) خود ارائه دهید .

اجازه ادامه مجوزها را بدهید. هنگامی که اسکریپت شما اجرا شد، خواهید دید که اسکریپت نتایج محاسبات را در سلول هدف نوشته است.

اکنون که می‌دانید چگونه یک تابع اسکریپت اصلی Google Apps بنویسید ، اجازه دهید نگاهی به عملکردهای پیشرفته‌تر بیندازیم.

برای بارگذاری آرایه ها از getValues ​​استفاده کنید(Use getValues To Load Arrays)

می توانید با استفاده از آرایه ها، مفهوم انجام محاسبات روی داده های صفحه گسترده خود را با اسکریپت به سطح جدیدی ببرید. اگر متغیری را در اسکریپت Google Apps با استفاده از getValues ​​بارگیری کنید، متغیر آرایه‌ای خواهد بود که می‌تواند چندین مقدار را از صفحه بارگیری کند.

function myFunction() {
   var sheet = SpreadsheetApp.getActiveSheet();
   var data = sheet.getDataRange().getValues();

متغیر داده یک آرایه چند بعدی است که تمام داده های برگه را در خود نگه می دارد. برای انجام محاسبات روی داده ها، از حلقه for استفاده می کنید. (for)شمارنده حلقه for در هر ردیف کار می کند و ستون بر اساس ستونی که می خواهید داده ها را در آن بکشید ثابت می ماند.

در صفحه گسترده مثال ما، می توانید محاسبات را روی سه ردیف داده به صورت زیر انجام دهید.

for (var i = 1; i < data.length; i++) {
   var result = data[i][0] * 100;
   sheet.getRange(i+1, 2).setValue(result); 
   }
}

این اسکریپت را همانطور که در بالا انجام دادید ذخیره(Save) و اجرا کنید. خواهید دید که همه نتایج در ستون 2 صفحه گسترده شما پر شده است.

متوجه خواهید شد که ارجاع دادن به سلول و ردیف در یک متغیر آرایه با تابع getRange متفاوت است. 

data[i][0] به ابعاد آرایه اشاره دارد که در آن بعد اول سطر و بعد دوم ستون است. هر دوی اینها از صفر شروع می شود.

getRange(i+1, 2) به سطر دوم اشاره دارد که i=1 باشد (زیرا ردیف 1 سرصفحه است)، و 2 دومین ستونی است که نتایج در آن ذخیره می شود.

برای نوشتن نتایج از appendRow استفاده کنید(Use appendRow To Write Results)

اگر صفحه گسترده ای داشته باشید که بخواهید داده ها را به جای ستون جدید در یک ردیف جدید بنویسید؟

انجام این کار با تابع appendRow آسان(appendRow) است. این تابع هیچ داده موجود در برگه را آزار نمی دهد. فقط یک ردیف جدید به برگه موجود اضافه می کند.

به عنوان مثال، تابعی بسازید که از 1 تا 10 شمارش کند و شمارنده ای را با مضرب های 2 در ستون شمارنده نشان دهد.(Counter)

این تابع به شکل زیر خواهد بود:

function myFunction() {
   var sheet = SpreadsheetApp.getActiveSheet();

   for (var i = 1; i<11; i++) {
      var result = i * 2;
     sheet.appendRow([i,result]);
   }
}

در اینجا نتایج زمانی که این تابع را اجرا می کنید آمده است.

فیدهای RSS را با URLFetchApp پردازش کنید(Process RSS Feeds With URLFetchApp)

می‌توانید تابع قبلی اسکریپت Google Sheets و (Google Sheets)URLFetchApp را برای کشیدن فید RSS(RSS) از هر وب‌سایتی ترکیب کنید و برای هر مقاله‌ای که اخیراً در آن وب‌سایت منتشر شده است، یک ردیف در صفحه‌گسترده بنویسید.

این اساساً یک روش DIY برای ایجاد صفحه‌گسترده فید RSS خود است!(RSS)

اسکریپت انجام این کار نیز خیلی پیچیده نیست.

function myFunction() {
   var sheet = SpreadsheetApp.getActiveSheet();
   var item, date, title, link, desc; 
   var txt = UrlFetchApp.fetch("https://www.topsecretwriters.com/rss").getContentText();
   var doc = Xml.parse(txt, false);  

   title = doc.getElement().getElement("channel").getElement("title").getText();
   var items = doc.getElement().getElement("channel").getElements("item");   

// Parsing single items in the RSS Feed

for (var i in items) {
   item  = items[i];
   title = item.getElement("title").getText();
   link  = item.getElement("link").getText();
   date  = item.getElement("pubDate").getText();
   desc  = item.getElement("description").getText();
   
   sheet.appendRow([title,link,date,desc]);
}
}

همانطور که می بینید، Xml.parse هر مورد را از فید RSS(RSS) بیرون می کشد و هر خط را به عنوان، پیوند، تاریخ و توضیحات جدا می کند. 

با استفاده از تابع appendRow ، می توانید این موارد را در ستون های مناسب برای هر آیتم در فید RSS(RSS) قرار دهید .

خروجی در برگه شما چیزی شبیه به این خواهد بود:

به جای جاسازی URL فید RSS در اسکریپت، می توانید یک فیلد در برگه خود با URL داشته باشید، و سپس چندین صفحه داشته باشید – یکی برای هر وب سایتی که می خواهید نظارت کنید.

رشته ها(Concatenate Strings) را به هم متصل کنید و یک بازگشت کالسکه (Carriage Return)اضافه کنید(Add)

می‌توانید با افزودن برخی از توابع دستکاری متن، صفحه‌گسترده RSS را یک قدم جلوتر ببرید و سپس از توابع ایمیل برای ارسال ایمیلی حاوی خلاصه‌ای از همه پست‌های جدید در فید RSS(RSS) سایت برای خود استفاده کنید.

برای انجام این کار، در زیر اسکریپتی که در بخش قبل ایجاد کردید، می‌خواهید تعدادی اسکریپت اضافه کنید که تمام اطلاعات صفحه گسترده را استخراج می‌کند. 

شما می خواهید خط موضوع و متن ایمیل را با تجزیه همه اطلاعات از همان آرایه "اقلام" که برای نوشتن داده های RSS در صفحه گسترده استفاده کرده اید، بسازید. 

برای انجام این کار، موضوع و پیام را با قرار دادن خطوط زیر قبل از حلقه For "اقلام" مقداردهی اولیه کنید.

var subject = ‘Latest 10 articles published at mysite.com’
var message = ‘’

سپس، در انتهای حلقه for "اقلام" (درست بعد از تابع appendRow)، خط زیر را اضافه کنید.

message = message + title + '\n' + link + '\n' + date + '\n' + desc + '\n' + '\n \n';

نماد "+" هر چهار مورد را با هم ترکیب می کند و پس از آن " " برای بازگشت کالسکه بعد از هر خط. در پایان هر بلوک داده عنوان، دو بار برای یک متن ایمیل با فرمت زیبا می خواهید.

هنگامی که همه ردیف ها پردازش شدند، متغیر "body" کل رشته پیام ایمیل را نگه می دارد. اکنون شما آماده ارسال ایمیل هستید!

نحوه ارسال ایمیل در اسکریپت Google Apps(How To Send Email In Google Apps Script)

بخش بعدی Google Script شما ارسال "موضوع" و "بدن" از طریق ایمیل است. انجام این کار در Google Script بسیار آسان است.

var emailAddress = [email protected];
MailApp.sendEmail(emailAddress, subject, message);

MailApp یک کلاس بسیار راحت در داخل اسکریپت های Google (MailApp)Apps(Google Apps) است که به شما امکان دسترسی به سرویس ایمیل حساب Google خود را برای ارسال یا دریافت ایمیل می دهد. به لطف این، خط واحد با تابع sendEmail به شما امکان می دهد هر ایمیلی(send any email) را فقط با آدرس ایمیل، خط موضوع و متن اصلی ارسال کنید.

این همان چیزی است که ایمیل به دست آمده به نظر می رسد. 

ترکیب قابلیت استخراج فید RSS(RSS) یک وب‌سایت ، ذخیره آن در یک برگه Google(Google Sheet) و ارسال آن به همراه پیوندهای URL برای خود ، پیگیری آخرین مطالب برای هر وب‌سایتی را بسیار راحت می‌کند.

این تنها نمونه‌ای از قدرتی است که در اسکریپت‌های Google Apps برای خودکار کردن اقدامات و ادغام چندین سرویس ابری وجود دارد.



About the author

من یک متخصص کامپیوتر با بیش از 10 سال تجربه هستم و در کمک به افراد در مدیریت کامپیوترهایشان در دفترشان تخصص دارم. من مقالاتی در مورد موضوعاتی مانند نحوه بهینه سازی اتصال اینترنت خود، نحوه راه اندازی رایانه برای بهترین تجربه بازی و موارد دیگر نوشته ام. اگر در مورد هر چیزی که مربوط به کار یا زندگی شخصی خود است به دنبال کمک هستید، من آن شخص برای شما هستم!



Related posts