Как импортировать транзакции PayPal в Google Таблицы

Опубликовано: 2022-06-16

PayPal transactions in Google Sheets

В этом руководстве показано, как импортировать транзакции PayPal в Google Таблицы с помощью скрипта Google Apps. Вы можете импортировать стандартные платежи PayPal, регулярные платежи по подписке, пожертвования или даже возмещения и возвратные платежи в Google Sheets.

После того, как данные будут импортированы в Google Sheets, вы можете экспортировать их в файл CSV и импортировать в бухгалтерское программное обеспечение Quickbooks. Пользователи Tally в Индии могут экспортировать транзакции PayPal из Google Sheets в формат XML и массово импортировать их в Tally.

Также см.: Автоматизация PayPal с помощью Google Forms

Импорт транзакций PayPal в Google Sheets

В этом примере мы будем импортировать список жертвователей в Таблицы Google, которые сделали пожертвования через PayPal.

1. Создайте учетные данные API внутри PayPal

Войдите в свою панель разработчика PayPal (developer.paypal.com) и создайте новое приложение в режиме реального времени. Дайте вашему приложению имя — Transaction Importer for Google Sheets и нажмите кнопку «Создать приложение».

PayPal создаст идентификатор клиента и секретный ключ клиента, которые понадобятся вам на следующем этапе. В разделе настроек Live App установите флажок « Transaction Search » и отключите все остальные параметры, поскольку мы хотим, чтобы ключи API отображали только транзакции и не имели других функций. Нажмите Сохранить, чтобы продолжить.

Paypal Account Credentials

2. Создайте проект Google Таблиц

Перейдите на sheets.new , чтобы создать новый лист Google. Перейдите в меню «Расширения» и выберите «Скрипт приложений», чтобы открыть редактор сценариев приложений.

Скопируйте-вставьте код в редактор. Не забудьте заменить код транзакции на свой. Вы можете использовать T0002 для подписки PayPal, T0014 для платежей пожертвований или T1107 для возмещения и отзыва платежей PayPal.

Комментарий /* @OnlyCurrentDoc */ — это комментарий скрипта Google Apps, который указывает скрипту Google Apps запускать код только внутри текущей таблицы Google и не требовать доступа к какой-либо другой электронной таблице на вашем Google Диске.

 /* @OnlyCurrentDoc */ /* Author: digitalinspiration.com */ const TRANSACTION_TYPE = 'T0001' ; // Enter your own PayPal Client ID and Client Secret key const PAYPAL_CLIENT_ID = '<YOUR_PAYPAL_CLIENT_ID>' ; const PAYPAL_CLIENT_SECRET = '<YOUR_PAYPAL_CLIENT_SECRET>' ; // Enter start and end dates in the format YYYY-MM-DD const START_DATE = '2022-03-01' ; const END_DATE = '2022-03-15' ; // Generate the PayPal access token const getPayPalAccessToken_ = ( ) => { const credentials = ` ${ PAYPAL_CLIENT_ID } : ${ PAYPAL_CLIENT_SECRET } ` ; const headers = { Authorization : ` Basic ${ Utilities . base64Encode ( credentials ) } ` , Accept : 'application/json' , 'Content-Type' : 'application/json' , 'Accept-Language' : 'en_US' , } ; const options = { method : 'POST' , headers , contentType : 'application/x-www-form-urlencoded' , payload : { grant_type : 'client_credentials' } , } ; const request = UrlFetchApp . fetch ( 'https://api.paypal.com/v1/oauth2/token' , options ) ; const { access_token } = JSON . parse ( request ) ; return access_token ; } ; // Append the query parameters to the PayPal API URL const buildAPIUrl_ = ( queryParams ) => { const baseUrl = [ ` https://api-m.paypal.com/v1/reporting/transactions ` ] ; Object . entries ( queryParams ) . forEach ( ( [ key , value ] , index ) => { const prefix = index === 0 ? '?' : '&' ; baseUrl . push ( ` ${ prefix } ${ key } = ${ value } ` ) ; } ) ; return baseUrl . join ( '' ) ; } ; // Fetch the list of PayPal transaction const fetchTransactionBatchFromPayPal = ( queryParams ) => { const options = { headers : { Authorization : ` Bearer ${ getPayPalAccessToken_ ( ) } ` , 'Content-Type' : 'application/json' , } , } ; const request = UrlFetchApp . fetch ( buildAPIUrl_ ( queryParams ) , options ) ; const { transaction_details , total_pages } = JSON . parse ( request ) ; return { transaction_details , total_pages } ; } ; // Extract the transaction details including the transaction ID, // donation amount, transaction date and buyer's email and country code const parsePayPalTransaction_ = ( { transaction_info , payer_info } ) => [ transaction_info . transaction_id , new Date ( transaction_info . transaction_initiation_date ) , transaction_info . transaction_amount ?. value , transaction_info . transaction_note || transaction_info . transaction_subject || '' , payer_info ?. payer_name ?. alternate_full_name , payer_info ?. email_address , payer_info ?. country_code , ] ; const fetchPayPalTransactions_ = ( ) => { const startDate = new Date ( START_DATE ) ; const endDate = new Date ( END_DATE ) ; startDate . setHours ( 0 , 0 , 0 , 0 ) ; endDate . setHours ( 23 , 59 , 59 , 999 ) ; const transactions = [ ] ; const params = { start_date : startDate . toISOString ( ) , end_date : endDate . toISOString ( ) , page_size : 100 , transaction_type : TRANSACTION_TYPE , fields : 'transaction_info,payer_info' , } ; for ( let page = 1 , hasMore = true ; hasMore ; page += 1 ) { const response = fetchTransactionBatchFromPayPal ( { ... params , page } ) ; const { transaction_details = [ ] , total_pages } = response ; transaction_details . map ( parsePayPalTransaction_ ) . forEach ( ( e ) => transactions . push ( e ) ) ; hasMore = total_pages && total_pages > page ; } return transactions ; } ; // Import the transactions from PayPal and write them to the active Google Sheet const importTransactionsToGoogleSheet = ( ) => { const transactions = fetchPayPalTransactions_ ( ) ; const { length } = transactions ; if ( length > 0 ) { const sheet = SpreadsheetApp . getActiveSheet ( ) ; sheet . getRange ( 1 , 1 , length , transactions [ 0 ] . length ) . setValues ( transactions ) ; const status = ` Imported ${ length } PayPal transactions into Google Sheets ` ; SpreadsheetApp . getActiveSpreadsheet ( ) . toast ( status ) ; } } ;

3. Запустите функцию импорта PayPal

В редакторе сценариев нажмите кнопку «Выполнить», чтобы импортировать транзакции из PayPal. Возможно, вам придется авторизовать сценарий, поскольку он требует разрешений для подключения к API PayPal, а также для записи данных в Google Таблицы от вашего имени.

Вот и все. Если в выбранном диапазоне дат есть какие-либо транзакции PayPal для импорта, скрипт запустится, и транзакции будут импортированы в Google Таблицы.

Run PayPal Importer

В следующей части руководства мы узнаем, как экспортировать транзакции PayPal из Google Sheets в файл XML для импорта в бухгалтерское программное обеспечение Tally.

Также см.: Отправка счетов PayPal из Google Sheets