الكتابة الأساسية

تتيح لك 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 notation. مثال على النطاق: 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 ب C D
1 العنصر التكلفة المخزون تاريخ الشحن
2 العجلة $20.50 4 2016/3/1
3 الباب $15 2 2016/3/15
4 المحرّك $100 1 2016/3/20
5 مجاميع $135.5 7 2016/3/20

الكتابة بشكل انتقائي في نطاق

عند كتابة القيم في نطاق، من الممكن تجنُّب تغيير بعض الخلايا الحالية من خلال ضبط عناصر المصفوفة المقابلة على 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 ب C D
1 العنصر التكلفة المخزون تاريخ الشحن
2 العجلة $1,00 4 2016/4/1
3 الباب 2 دولار أميركي (أو ما يعادلهما بالعملة المحلية) 2 2016/4/15
4 المحرّك 1
5 مجاميع $3,00 7 2016/4/15

يُرجى العِلم أنّ صف "المجاميع"، على الرغم من أنّه لم يتم تغييره مباشرةً من خلال هذا الطلب، يتغيّر لأنّ خلاياه تحتوي على صيغ تعتمد على الخلايا المعدَّلة.

الكتابة في نطاقات متعددة

بدءًا بورقة فارغة، يعرض نموذج عينة التعليمات البرمجية التالي 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 ب C D
1 العنصر التكلفة المخزون تاريخ الشحن
2 العجلة $20.50 4 2016/3/1
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 ب C D E
1 البيانات 123.45 صواب =MAX(D2:D4) 10
2

يُرجى العِلم أنّ "صواب" في المنتصف وهي قيمة منطقية، بينما "123.45" في أقصى اليسار لأنّها رقم، و"10" في أقصى اليمين لأنّها سلسلة. لا يتم تحليل الصيغة، وتظهر أيضًا كسلسلة.

إضافة القيم

ابدأ بورقة بيانات مثل الجدول أدناه:

A ب C D
1 العنصر التكلفة المخزون تاريخ الشحن
2 العجلة $20.50 4 2016/3/1
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 ب C D
1 العنصر التكلفة المخزون تاريخ الشحن
2 العجلة $20.50 4 2016/3/1
3 الباب $15 2 2016/3/15
4 المحرّك $100 1 2016/3/20
5