تسمح لك Google Sheets API بكتابة قيم ومعادلات إلى الخلايا والنطاقات
ومجموعات النطاقات والأوراق الكاملة. توضّح الأمثلة الواردة في هذه الصفحة كيفية تنفيذ بعض عمليات الكتابة الشائعة باستخدام مورد spreadsheets.values
لـ Sheets API.
يُرجى العِلم أنّه من الممكن أيضًا كتابة قيم الخلايا باستخدام الطريقة
spreadsheet.batchUpdate
،
والتي يمكن أن تكون مفيدة إذا كنت تريد تعديل تنسيق الخلية أو الخصائص الأخرى التي لا يؤثر فيها المورد
spreadsheets.values
في آنٍ واحد. على سبيل المثال، إذا كنت تريد نسخ نطاق من الخلايا من ورقة إلى أخرى مع استبدال كل من صيغة الخلية وتنسيق الخلية، يمكنك استخدام الطريقة UpdateCellsRequest
مع spreadsheet.batchUpdate
.
ومع ذلك، بالنسبة إلى كتابة القيم البسيطة، من الأسهل استخدام الطريقة
spreadsheets.values.update
أو الطريقة
spreadsheets.values.batchUpdate
.
ويتم تقديم هذه الأمثلة في شكل طلبات HTTP لتكون محايدة لغة. للتعرّف على كيفية تنفيذ عمليات الكتابة بلغات مختلفة باستخدام مكتبات برامج Google API، يمكنك الاطّلاع على قراءة قيم الخلايا وكتابتها.
في هذه الأمثلة، يشير العنصر النائب SPREADSHEET_ID
إلى المكان الذي ستقدّم فيه رقم تعريف
جدول البيانات، والذي يمكن اكتشافه من
عنوان URL لجدول البيانات. يتم تحديد النطاقات المطلوب الكتابة إليها باستخدام تدوين A1. مثال على النطاق هو Sheet1!A1:D5.
كتابة نطاق واحد
بدءًا من جدول بيانات جديد وفارغ، يوضّح نموذج التعليمات البرمجية
spreadsheets.values.update
التالي كيفية كتابة القيم في نطاق. يجب إدخال معلَمة طلب البحث ValueInputOption
وتحدّد ما إذا كان سيتم تحليل القيم المكتوبة (على سبيل المثال، ما إذا تم تحويل سلسلة إلى تاريخ أم لا).
نص الطلب هو كائن ValueRange
يصف قيم النطاق المطلوب كتابتها. يشير الحقل
majorDimension
إلى
أن الصفائف عبارة عن قوائم بالقيم المنظّمة حسب الصفوف. يتم استبدال القيم الحالية
في النطاق المستهدف.
في ما يلي بروتوكول الطلب.
PUT https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID
/values/Sheet1!A1:D5?valueInputOption=VALUE_INPUT_OPTION
{ "range": "Sheet1!A1:D5", "majorDimension": "ROWS", "values": [ ["Item", "Cost", "Stocked", "Ship Date"], ["Wheel", "$20.50", "4", "3/1/2016"], ["Door", "$15", "2", "3/15/2016"], ["Engine", "$100", "1", "3/20/2016"], ["Totals", "=SUM(B2:B4)", "=SUM(C2:C4)", "=MAX(D2:D4)"] ], }
تتكوّن الاستجابة من عنصر UpdateValuesResponse
، مثل هذا الكائن:
{
"spreadsheetId": SPREADSHEET_ID
,
"updatedRange": "Sheet1!A1:D5",
"updatedRows": 5,
"updatedColumns": 4,
"updatedCells": 20,
}
تظهر الورقة الناتجة على النحو التالي:
A | B | C | D | |
1 | المنتج/الخدمة | التكلفة | المخزون | تاريخ الشحن |
2 | العجلة | SAR 20.50 | 4 | 1/3/2016 |
3 | باب | دولار هونغ كونغ | 2 | 2016/3/15 |
4 | المحرك | $100 | 1 | 20/3/2016 |
5 | مجاميع | 135.5 دولار نيوزيلندي | 7 | 20/3/2016 |
الكتابة بشكل انتقائي على نطاق
عند كتابة القيم إلى نطاق، يمكن تجنُّب تغيير بعض الخلايا الحالية من خلال ضبط عناصر الصفيف المقابلة على null
. من الممكن أيضًا
محو خلية عن طريق كتابة سلسلة فارغة (""
) إليها.
بدءًا من ورقة تحتوي على البيانات نفسها الناتجة عن المثال أعلاه، يوضّح نموذج الرمز البرمجي
spreadsheets.values.update
التالي كيفية كتابة القيم إلى النطاق B1:D4، مع ترك بعض الخلايا بدون تغيير ومحو الخلايا الأخرى بشكل انتقائي. يجب إدخال معلَمة طلب البحث ValueInputOption
وتحدّد ما إذا كان سيتم تحليل القيم المكتوبة (على سبيل المثال، ما إذا تم تحويل سلسلة إلى تاريخ أم لا).
نص الطلب هو كائن ValueRange
يصف قيم النطاق المطلوب كتابتها. يشير الحقل
majorDimension
إلى
أن الصفائف عبارة عن قوائم بالقيم المنظّمة حسب العمود.
في ما يلي بروتوكول الطلب.
PUT https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID
/values/Sheet1!B1?valueInputOption=VALUE_INPUT_OPTION
{ "range": "Sheet1!B1", "majorDimension": "COLUMNS", "values": [ [null,"$1","$2", ""], [], [null,"4/1/2016", "4/15/2016", ""] ] }
يسرد الحقل values
هنا التغييرات التي تم إجراؤها على كل عمود في النطاق. تشير
الصفيفة الأولى إلى أنّه يجب ترك B1 بدون تغيير (بسبب عنصر الصفيف null
)،
بينما يجب محو B4 (سلسلة فارغة). B2 وB3
تم تحديث قيمهما. تقوم الصفيفة الثالثة بتنفيذ نفس العمليات على العمود D، بينما تشير
الصفيفة الفارغة الثانية إلى أن العمود C سيتم تركه بدون تغيير.
تتكون الاستجابة من كائن UpdateValuesResponse
، مثل هذا:
{
"spreadsheetId": SPREADSHEET_ID
,
"updatedRange": "Sheet1!B1:D5",
"updatedRows": 3,
"updatedColumns": 2,
"updatedCells": 6,
}
تظهر الورقة الناتجة على النحو التالي:
A | B | C | D | |
1 | المنتج/الخدمة | التكلفة | المخزون | تاريخ الشحن |
2 | العجلة | 1.00 دولار أمريكي (أو ما يعادله بالعملة المحلية) | 4 | 1/4/2016 |
3 | باب | 2 دولار أميركي (أو ما يعادلهما بالعملة المحلية) | 2 | 15/4/2016 |
4 | المحرك | 1 | ||
5 | مجاميع | 3.00 دولارات أمريكية (أو ما يعادلها بالعملة المحلية) | 7 | 15/4/2016 |
لاحظ أن صف "Totals" (الإجماليات)، على الرغم من عدم تغييره بشكل مباشر من خلال هذا الطلب، يتغير لأن خلاياه تحتوي على صيغ تعتمد على الخلايا التي تم تغييرها.
الكتابة في نطاقات متعددة
بدءًا من ورقة فارغة، يوضّح نموذج الرمز البرمجي
spreadsheets.values.batchUpdate
التالي كيفية كتابة القيم في النطاقَين Sheet1!A1:A4 وSheet1!B1:D2. يتم استبدال القيم الحالية في النطاق المستهدَف. يتألف نص الطلب من كائن ValueInputOption
يعرض كيفية تفسير بيانات الإدخال ومجموعة من كائنات ValueRange
المقابلة لكل نطاق مكتوب. ويحدّد الحقل majorDimension
ما إذا كانت الصفائف المضمّنة سيتم تفسيرها كصفائف أعمدة أو صفوف.
في ما يلي بروتوكول الطلب.
POST https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID
/values:batchUpdate
{ "valueInputOption": "VALUE_INPUT_OPTION", "data": [ { "range": "Sheet1!A1:A4", "majorDimension": "COLUMNS", "values": [ ["Item", "Wheel", "Door", "Engine"] ] }, { "range": "Sheet1!B1:D2", "majorDimension": "ROWS", "values": [ ["Cost", "Stocked", "Ship Date"], ["$20.50", "4", "3/1/2016"] ] } ] }
تتكوّن الاستجابة من كائن يسرد إحصاءات الخلية المعدَّلة
ومصفوفة من عناصر
UpdateValuesResponse
،
عنصر واحد لكل نطاق تم تعديله. مثال:
{ "spreadsheetId":SPREADSHEET_ID
, "totalUpdatedRows": 4, "totalUpdatedColumns": 4, "totalUpdatedCells": 10, "totalUpdatedSheets": 1, "responses": [ { "spreadsheetId":SPREADSHEET_ID
, "updatedRange": "Sheet1!A1:A4", "updatedRows": 4, "updatedColumns": 1, "updatedCells": 4, }, { "spreadsheetId":SPREADSHEET_ID
, "updatedRange": "Sheet1!B1:D2", "updatedRows": 2, "updatedColumns": 3, "updatedCells": 6, } ], }
تظهر الورقة الناتجة على النحو التالي:
A | B | C | D | |
1 | المنتج/الخدمة | التكلفة | المخزون | تاريخ الشحن |
2 | العجلة | SAR 20.50 | 4 | 1/3/2016 |
3 | باب | |||
4 | المحرك | |||
5 |
كتابة القيم بدون تحليل
بدءًا من ورقة فارغة، يوضّح نموذج الرمز البرمجي
spreadsheets.values.update
التالي كيفية كتابة القيم في النطاق Sheet1!A1:E1، ولكنه يستخدم
مَعلمة طلب البحث RAW
ValueInputOption
لمنع تحليل السلاسل المكتوبة كصيغ
أو قيم منطقية أو أرقام. كما تظهر كسلاسل ويتم ضبط محاذاة النص في الورقة.
نص الطلب هو كائن ValueRange
يصف قيم النطاق المطلوب كتابتها. يشير الحقل
majorDimension
إلى
أن الصفائف عبارة عن قوائم بالقيم المنظّمة حسب الصفوف. يتم استبدال القيم الحالية
في النطاق المستهدف.
في ما يلي بروتوكول الطلب.
PUT https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID
/values/Sheet1!A1:E1?valueInputOption=RAW
{ "range": "Sheet1!A1:E1", "majorDimension": "ROWS", "values": [ ["Data", 123.45, true, "=MAX(D2:D4)", "10"] ], }
تتكون الاستجابة من كائن UpdateValuesResponse
، مثل هذا:
{
"spreadsheetId": SPREADSHEET_ID
,
"updatedRange": "Sheet1!A1:E1",
"updatedRows": 1,
"updatedColumns": 5,
"updatedCells": 5,
}
تظهر الورقة الناتجة على النحو التالي:
A | B | C | D | E | |
1 | البيانات | 123.45 | TRUE | =MAX(D2:D4) | 10 |
2 |
لاحظ أن "TRUE" يتم توسيطها وهي قيمة منطقية، بينما يتم ضبط "123.45" بشكل صحيح لأنه رقم، و"10" يُترك مبررًا لأنه سلسلة. لم يتمّ تحليل الصيغة، وستظهر أيضًا كسلسلة.
إلحاق القيم
ابدأ بورقة مثل الجدول أدناه:
A | B | C | D | |
1 | المنتج/الخدمة | التكلفة | المخزون | تاريخ الشحن |
2 | العجلة | SAR 20.50 | 4 | 1/3/2016 |
3 |
يوضح نموذج التعليمات البرمجية spreadsheets.values.append
التالي كيفية إضافة صفين جديدين من القيم بدءًا من الصف 3. يجب إدخال معلَمة طلب البحث ValueInputOption
وتحدّد ما إذا كان سيتم تحليل القيم المكتوبة (على سبيل المثال، ما إذا تم تحويل سلسلة إلى تاريخ أم لا).
نص الطلب هو كائن ValueRange
يصف قيم النطاق المطلوب كتابتها. يشير الحقل
majorDimension
إلى
أن الصفائف عبارة عن قوائم بالقيم المنظّمة حسب الصفوف.
في ما يلي بروتوكول الطلب.
POST https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID
/values/Sheet1!A1:E1:append?valueInputOption=VALUE_INPUT_OPTION
{ "range": "Sheet1!A1:E1", "majorDimension": "ROWS", "values": [ ["Door", "$15", "2", "3/15/2016"], ["Engine", "$100", "1", "3/20/2016"], ], }
تتكون الاستجابة من كائن AppendValuesResponse
، مثل هذا:
{ "spreadsheetId":SPREADSHEET_ID
, "tableRange": "Sheet1!A1:D2", "updates": { "spreadsheetId":SPREADSHEET_ID
, "updatedRange": "Sheet1!A3:D4", "updatedRows": 2, "updatedColumns": 4, "updatedCells": 8, } }
تظهر الورقة الناتجة على النحو التالي:
A | B | C | D | |
1 | المنتج/الخدمة | التكلفة | المخزون | تاريخ الشحن |
2 | العجلة | SAR 20.50 | 4 | 1/3/2016 |
3 | باب | دولار هونغ كونغ | 2 | 2016/3/15 |
4 | المحرك | $100 | 1 | 20/3/2016 |
5 |